【问题标题】:Android AccountManager authToken and OAuthAndroid AccountManager authToken 和 OAuth
【发布时间】:2011-10-02 17:24:47
【问题描述】:

我的任务是为 Gmail 编写 IMAP 电子邮件客户端。到目前为止,我知道客户端应该通过 OAuth 进行身份验证(Google 还提供了一个 java library for IMAP auth)。但我想让用户免于输入任何密码。

Android 提供了一种很酷的“原生”方式来通过 AccountManager 为 google 帐户服务获取 authToken。但我想知道如何使用 authToken 以及它的用途是什么?是否只用于GAE认证?

有没有办法在没有浏览器的情况下(通过 AccountManager)获取 oauthToken 和 oauthTokenSecret?

【问题讨论】:

  • 看看这个talk from Google IO 2011。使用所述 AccountManager 的较新的 Android 设备有很好的用户体验。
  • 谢谢!但我已经浏览了这个库,发现 Google API 中没有 gmail 交互。悲伤但真实,我必须使用 IMAP。还是我错过了什么?
  • 我不确定,但我确信可以通过 OAuth 访问 GMail。我正在使用可以这样做的 Chrome 扩展程序。
  • OAuth?当然。关键是使用Account getAuthToken 方法并为OAuth 提供authToken。但对于 Gmail,这似乎是不可能的。
  • 感谢您的回复。问题依然存在。如果与范围相关的问题得到解决,那么下一个问题就是弄清楚如何将此 authToken 用于需要 OAuth 令牌的服务器。

标签: android oauth accountmanager


【解决方案1】:

您是否尝试在调用AccountManager.getAutToken() 时使用“oauth2:https://mail.google.com/”作为“身份验证令牌类型”(authTokenType 参数)?

根据talk you mentioned 46:50 所说的,它应该可以工作。

顺便说一下,this page 描述了如何为 Google 任务获取 OAuth2 令牌,它有 a link to a code sample。这也使得它听起来只是提供正确的authTokenType 参数的问题。

【讨论】:

  • 它应该可以正常工作!但仅适用于 ClientLogin 库。正确的?当 Android 客户端应用程序应该获取 OAuth 令牌的原因有很多时,而不是 AccountManager 提供的那些。而 WebView 似乎是唯一的方法......感谢您的回答!
  • 如果使用示例中提供的 authTokenType,AccountManager 给出的令牌应该是 OAuth 令牌。我必须承认我自己还没有尝试过,但是 last code sample 似乎对此很明确(AccountManager 返回的令牌与 oauth2.draft10.GoogleAccessProtectedResource 一起使用)。
  • 哇!感谢您的评论 — 我将在本周末尝试从 AccountManager 测试令牌。
  • 获取令牌后如何在 imap 中设置相同的同时获取消息或连接时?
  • 通过 AccountManager 访问谷歌 IMAP 工作正常。请参阅 github.com/jberkel/sms-backup-plus 了解使用此功能的项目。
猜你喜欢
  • 2016-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-10
  • 1970-01-01
  • 2016-12-24
  • 2011-07-28
  • 1970-01-01
相关资源
最近更新 更多