java - Android:如何验证我的 Google 帐户以及如何获取我的 GMail 任务?

标签 java android api task

我正在开发一个 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 等,因此我在 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");

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

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

最佳答案

Tasks 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();

等等。

关于java - Android:如何验证我的 Google 帐户以及如何获取我的 GMail 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16707346/

相关文章:

javascript - Cordova 或 phonegap : saving file catcher

javascript - Soundcloud 在 Javascript 中保持连接

java - 使用java的-XX :OnError option

java - entitymanager.merge() 可以作用于克隆的实体对象吗

java - 有没有办法对多个变量使用单个注释?

android - 华为,logcat 没有显示我的应用程序的日志?

c# - 获取 iOS 设备的 Android 标识符 (C#)

api - 使用 Firebase OAuth 保护 RESTful API?

php - PayPal,notify_url 从未执行过

java - 禁用所有不是第一个月或第一周的日期