我需要从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服务一样合作?
答案 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范围,而2011和2012的Stackoverflow上的两个旧问题表明它还不支持OAuth 2。