Android:如何对我的Google帐户进行身份验证?如何获取我的GMail任务?

时间:2013-05-23 06:49:51

标签: java android api task

我正在开发一款Android应用,以连接到我的Google Tasks并在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");

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

我发现的每个教程都推荐使用不同版本的库和不同的策略。我真的不知道应该跟随谁。

1 个答案:

答案 0 :(得分:0)

任务API 真的令人困惑。

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

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

让样本正常工作后,您可以通过查看here查看要使用的不同函数来完成更多操作。例如,要请求“默认”任务列表中的所有任务,请使用以下行:

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

更新任务:

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

等等。