Android 安卓谷歌&x2B;重复登录显示已注册用户的权限屏幕

Android 安卓谷歌&x2B;重复登录显示已注册用户的权限屏幕,android,google-plus,Android,Google Plus,我已经使用如上所述的“跨客户端标识”方法实现了类的google+登录。我的应用程序使用以下作用域: 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 用

我已经使用如上所述的“跨客户端标识”方法实现了类的google+登录。我的应用程序使用以下作用域:

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
用户第一次在所有范围内登录时,都会在一个屏幕上显示给用户,单击“登录”可以正常工作。一旦用户第一次登录,问题就开始了;任何后续登录(注销应用程序并尝试重新登录)都会导致用户出现以下情况:

  • 用户将再次显示google权限屏幕(尽管已经为此帐户授予了此应用程序的权限)
  • 这一次(不是第一次登录)权限屏幕分为两部分,第一部分仅显示youtube范围:

  • 第二个显示了其余的作用域(再次包括youtube):

如果用户已接受此帐户的这些作用域,是否有人知道为什么会再次显示权限屏幕?

更多关于为什么第二次将作用域拆分为两个不同的屏幕的信息?

在实现该流程时需要小心,以避免此问题。需要知道的重要一点是,对代码的请求(例如oauth2:server:client\u id:CLIENTID:api\u scope:SCOPES)将始终需要显示一个同意对话框。您应该使用的正确流程:

  • 检索用户的ID令牌(这不需要同意)
  • 将其发送到服务器,以确定此用户是否需要新的(刷新)令牌
  • 如果服务器有一个,它应该从刷新令牌生成一个访问令牌
  • 如果没有,客户端应该检索一个,这需要用户同意 关于双重同意屏幕-可能需要查看您的代码才能回答此问题。一个常见的原因是使用GoogleAuthUtil检索访问令牌,然后检索代码(已经看到的访问令牌的同意对话框对于代码检索不起作用,因此它会导致另一个)。youtube范围可能存在问题,但检索多个令牌的可能性最大