如何使用android的客户经理获取多个范围的身份验证令牌

时间:2013-01-19 23:21:20

标签: android google-app-engine oauth accountmanager auth-token

我需要从Android应用程序中获取一个oauth令牌,这将允许我连接到我的appengine应用程序,以及能够从用户的帐户发送电子邮件。我遇到的问题是,由于某种原因,可用的auth令牌范围实际上没有任何好的文档。

从我发现你可以用空间分隔符连接auth令牌,但我没有运气。 accountManager.getAuthToken(account, "oauth2:https://mail.google.com/", null, activity, new AuthTokenCallback(), null); 可以很好地获得电子邮件令牌。

同样地 accountManager.getAuthToken(account, "ah", null, activity, new AuthTokenCallback(), null); 适用于app引擎令牌。

然而 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 个答案:

答案 0 :(得分:3)

问题是您正在尝试将OAuth 2.0范围(“https://mail.google.com/”)与ClientLogin范围(“啊”)混合使用,我认为这不受支持。

当您需要具有许多权限级别的令牌时,如您所说,将它们与空格分隔符连接起来。对于OAuth 2范围,它的执行方式如下:oauth2:{space separated list of scopes}

当您提供范围oauth2:https://mail.google.com/ ah时,假定两个范围都是OAuth 2范围。但由于“啊”不是有效的OAuth 2范围,因此Google服务器不接受它,而是为您提供错误。

我不知道App Engine的任何OAuth 2范围,而20112012的Stackoverflow上的两个旧问题表明它还不支持OAuth 2。