我已使用GoogleAuthUtil类使用“跨客户端身份”方法实施了Google +登录here。我的应用使用以下范围:
http://picasaweb.google.com/data/
http://gdata.youtube.com
https://www.googleapis.com/auth/plus.login
https://www.googleapis.com/auth/userinfo.email
https://www.googleapis.com/auth/userinfo.profile
用户首次登录所有范围时,会在单个屏幕中向用户显示,并且单击登录可以正常工作。一旦用户第一次登录,问题就开始了;任何后续登录(退出应用程序并尝试重新登录)都会引导用户进入以下情形:
这次(不是第一次登录)权限屏幕被拆分为两个,第一个只显示youtube范围:
第二个显示其余的范围(包括youtube):
如果用户已经接受了此帐户的这些范围,是否有人知道为什么会再次显示权限屏幕?
更多的是为什么范围第二次分成两个不同的屏幕?
答案 0 :(得分:2)
实施该流程时需要小心以避免此问题。重要的是要知道对代码的请求(例如oauth2:server:client_id:CLIENTID:api_scope:SCOPES)总是需要显示同意对话框。你应该使用适当的流程:
关于双重同意屏幕 - 可能需要查看您的代码才能回答这个问题。一个常见的原因是使用GoogleAuthUtil检索访问令牌,然后检索代码(已经看到的访问令牌的同意对话框不计算代码检索,因此它会导致另一个)。它可能围绕youtube范围存在问题,但最有可能检索多个令牌。