1

我正在开发一个 Android 应用程序来连接到我的 Google 任务并在 ListView 中显示它们。我尝试逐步遵循一些教程,例如https://developers.google.com/google-apps/tasks/oauth-and-tasks-on-android但这些都不起作用。我试图下载 google-api-services-tasks-v1-1.1.0-beta.jar 和该教程中提到的所有 jar,在导入所有必要的库之后它就不起作用了,当我尝试连接后得到我的任务我只是得到空值。

我发现我可以使用 Oauth2.0 进行身份验证并访问任务 API,以获取我的 clientID ecc。所以我在 Google API 的控制台上创建了一个帐户并创建了我的 OAuth clientID。

之后,我尝试使用此代码进行身份验证

HttpTransport transport = new NetHttpTransport();
      JacksonFactory jsonFactory = new JacksonFactory();

      String clientId = "myID";
      String clientSecret = "mySecret";
      String redirectUrl = "https://localhost/oauth2callback";
      Iterable<String> scope ="https://www.googleapis.com/auth/tasks";
      String authorizationUrl = new GoogleAuthorizationCodeRequestUrl(clientId, redirectUrl, scope)
      .build();
      String code="Code";
      GoogleTokenResponse response = new GoogleAuthorizationCodeTokenRequest(transport, jsonFactory,
                clientId, clientSecret, code, redirectUrl).execute();
      GoogleAccessProtectedResource accessProtectedResource = new GoogleAccessProtectedResource(
                response.getAccessToken(), transport, jsonFactory, clientId, clientSecret,
                response.getRefreshToken());
      Tasks service = new Tasks(transport, jsonFactory, accessProtectedResource);
      AccessProtectedResource accessProtectedResource = new GoogleAccessProtectedResource(accessToken);
      Tasks service = new Tasks(transport, new JacksonFactory(),  accessProtectedResource);
      service.accessKey="MyKey";
      service.setApplicationName("GTasks");

我没有收到任何错误,但是在创建此服务后,我尝试获取我的任务列表,但什么也没发生,我也没有得到任何结果。当我尝试记录任务列表列表的内容时,我得到了一个空列表“{}”。我怀疑这可能是因为我找到了旧版本的库,但即使我尝试使用最新版本,它也不起作用,我得到了相同的结果。我真的很困惑。

我发现的每个教程都推荐了不同版本的库和不同的策略。我真的不知道我应该关注哪一个。

4

1 回答 1

0

Tasks API真的很混乱。

我和你一样,试图推出自己的身份验证但没有成功。我发现修改google-api-java-client提供的示例更容易。此示例仅列出“默认”任务列表中的任务。

您需要下载并安装 Eclipse 的 GDT 插件,然后使用它来安装您想要使用的 Google API。

示例工作后,您可以通过在此处查找要使用的不同功能来使用它做更多事情。例如,要请求“默认”任务列表中的所有任务,请使用以下行:

client.tasks().list("@default").setFields("items/title").execute().getItems();

要更新任务:

client.tasks().update("@default", task.getId(), task).execute();

等等。

于 2013-10-20T00:22:06.077 回答