如何使用 android 的帐户管理器获取多个范围的身份验证令牌
Posted
技术标签:
【中文标题】如何使用 android 的帐户管理器获取多个范围的身份验证令牌【英文标题】:How can I get an auth token for multiple scopes using android's account manager 【发布时间】:2013-01-03 09:45:16 【问题描述】:我需要从一个 android 应用程序中获取一个 oauth 令牌,这将允许我连接到我的 appengine 应用程序以及能够从用户的帐户发送电子邮件。我遇到的问题是,由于某种原因,实际上没有任何关于可用的身份验证令牌范围的好的文档。
根据我的发现,您可以使用空格分隔符连接身份验证令牌,但我没有运气。
accountManager.getAuthToken(account, "oauth2:https://mail.google.com/", null, activity, new AuthTokenCallback(), null);
可以很好地获取电子邮件令牌。
同样
accountManager.getAuthToken(account, "ah", null, activity, new AuthTokenCallback(), null);
非常适合应用引擎令牌。
然而
accountManager.getAuthToken(account, "oauth2:https://mail.google.com/ ah", null, activity, new AuthTokenCallback(), null);
让我陷入错误
Couldn't sign in,
There was a problem communicating with Google servers
Try again later
我怎样才能让这两者像良好的 Google 小服务一样协同工作?
【问题讨论】:
【参考方案1】:问题是您正在尝试将 OAuth 2.0 范围(“https://mail.google.com/”)与 ClientLogin 范围(“ah”)混合,我认为这不受支持。
当您想要一个具有多个权限级别的令牌时,您可以将它们与您所说的空格分隔符连接起来。对于 OAuth 2 范围,它是这样完成的:oauth2:space separated list of scopes
。
当您提供范围 oauth2:https://mail.google.com/ ah
时,假定两个范围都是 OAuth 2 范围。但由于“啊”不是有效的 OAuth 2 范围,Google 服务器不会接受它,而是会给出您看到的错误。
我不知道 App Engine 的任何 OAuth 2 范围和 *** 上来自 2011 和 2012 的两个较早的问题表明它还不支持 OAuth 2。
【讨论】:
它不支持铸造 OAuth 2.0 令牌,但您可以使用oauth
API 验证它们:oauth.get_current_user(THE_OAUTH2_SCOPE_USED)
developers.google.com/appengine/docs/python/oauth/overview
啊,这就解释了,谢谢。不幸的是,除了必须分别存储和管理两个令牌之外,我似乎找不到解决方法。希望这将很快得到解决..以上是关于如何使用 android 的帐户管理器获取多个范围的身份验证令牌的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Windows Git 凭据管理器使用多个 Git 帐户
使用 Android 帐户管理器在我的服务器上验证使用 FB 登录的用户
使用 Android 帐户管理器在我的服务器上验证使用 FB 登录的用户