该应用程序不断要求“有离线访问权限”,为什么?
在使用oAuth2授权应用程序并获取请求范围的权限之后,每次尝试使用Google oAuth2login时,我仍然会收到一个屏幕,询问是否允许应用程序具有脱机访问权限。 是不是不应该再次出现,一旦我授予它的权限?
你使用approval_prompt
参数吗? 如果您已有刷新令牌,请勿尝试再次请求离线访问。 即使用户再次login,它也应该保持有效,而不要求离线访问。
关于这个的参考可以在这里find。
这个提示可能来自两个参数,
- access_type(如果是“离线”)
- approval_prompt(如果是“强制”)
确保你已经设置access_type为'online',apporoval_prompt为'auto'
$client->setAccessType('online'); $client->setApprovalPrompt('auto') ;
我的猜测是,您的应用程序有approval_prompt =强制每次强制OAuth。 由于用户已经授权了您要求的任何范围,因此无需重复。 然而,屏幕上必须说些什么,所以如果没有更好的想法,Google会要求“离线访问”。
只要确保你没有强制授权,你应该没问题。
这不是一个错误。 这是谷歌oauth2的正常情况。
第一过程同意如下:
- 用户同意应用程序获取有关用户的信息。
- 当用户点击接受button时,浏览器会将同意信息保存到Cookie中,Google帐户将保存权限(请参阅https://security.google.com/settings/security/permissions )
从第二个过程:
浏览器检查cookie帐户允许的cookie权限。
- 如果cookie存在于浏览器中并且具有此应用程序的许可权( https://security.google.com/settings/security/permissions ):同意屏幕将被忽略
- 如果浏览器中存在Cookie,但没有此应用程序的许可权:将显示同意屏幕
- 如果浏览器中不存在cookie:应用程序将显示“有离线访问”。
根据增量授权机制和devise,这很可能是非常正常的。这个想法是,如果用户已经授予应用程序的权限,则不需要显示相同的权限并要求用户批准。
http://googleplusplatform.blogspot.com/2013/12/google-sign-in-improvements11.html