使用 Android AccountManager 获取 gdata 的 authtoken
-
25-09-2019 - |
题
所以我试图同步到谷歌文档,而不必询问用户的凭据。我使用此代码来获取身份验证令牌:
AccountManager mgr = AccountManager.get(activity);
authToken = mgr.blockingGetAuthToken(account, DocsService.DOCS_SERVICE, true);
这将返回一个看起来格式良好的身份验证令牌。所以在我的 DocsService 上我运行:
service.setAuthSubToken(authToken);
但是,当我尝试使用 API 时,我只是收到 AuthenticationException。关于如何处理这个错误有什么想法吗?
编辑:我确实拥有 USE_CREDENTIALS 权限。
解决方案
问题是返回的令牌是 ClientLogin 令牌,而不是 AuthSub 令牌。更大的问题是 GData Java 客户端库并未正式支持 Android。我们最近在 GData Java 客户端库的主页上添加了一条注释,我们推荐用于 Android 适用于 Java 的 Google API 客户端库 反而。
我想到了两个示例,它们对您开始使用适用于 Java 的 Google API 客户端库很有帮助: 日历-v2-atom-android-示例 和 文档-v3-atom-oauth-样本
披露:我是 GData Java 客户端库和 Java 项目的 Google API 客户端库的所有者。
其他提示
您可能还想查看 Yaniv 的 Google I/O 2011 会议幻灯片/视频,以获取有关如何访问 Android 上的 GData API 的参考。
正如 Yaniv 所解释的,Gdata Lib 在 Android 中不起作用。我浪费了好几个小时却没有任何结果。它看起来很奇怪,它是谷歌的产品,但在他们自己的平台(Android)上仍然不受支持。
不管怎样,我已经开发了一个可以在 Android 上运行的客户端库。我正在 Google Code 上管理该项目-http://code.google.com/p/google-spreadsheet-lib-android/
你可以尝试一下。