3

我需要从一个 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 服务一样协同工作?

4

1 回答 1

4

问题是您正在尝试将 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年 Stackoverflow 上的两个较早的问题表明它还不支持 OAuth 2。

于 2013-01-20T08:39:09.373 回答