该应用程序一直要求获得“离线访问”的许可,为什么?

时间:2014-01-13 17:00:17

标签: oauth-2.0 google-oauth

在使用oAuth2授权应用并获取所请求范围的权限后,我仍然会看到一个屏幕,询问我是否授予应用有离线访问权限的权限,每次我尝试使用Google oAuth2登录时。一旦我允许它拥有它,是不是应该不再出现的东西?

enter image description here

5 个答案:

答案 0 :(得分:13)

这个提示可能是因为有两个参数,

  • access_type(如果它是'离线')
  • approval_prompt(如果是'强制')

确保您已将access_type设置为' online'和apporoval_prompt到' auto'

 $client->setAccessType('online');
 $client->setApprovalPrompt('auto') ;

答案 1 :(得分:10)

您使用approval_prompt参数吗?如果您已有刷新令牌,请尽量不要再次请求脱机访问。即使用户再次登录,它仍应保持有效,而不请求离线访问。

可以找到关于此的参考here

答案 2 :(得分:7)

我的猜测是,您的应用每次都有appro_prompt =强制强制执行OAuth。由于用户已经授权您请求的任何范围,因此无需重复这些范围。然而,屏幕必须说些什么,所以在没有任何更好的想法的情况下,Google会要求“离线访问”。

只要确保你没有强制认证,你应该没事。

答案 3 :(得分:5)

这不是错误。这是谷歌oauth2的正常情况。

首次处理同意如下:

  1. 用户同意应用程序获取有关用户的信息。
  2. 当用户点击“接受”按钮时,浏览器会将同意信息保存到Cookie中,而Google帐户将保存权限(请查看https://security.google.com/settings/security/permissions
  3. 来自第二个流程:

    浏览器检查谷歌帐户的cookie同意许可。

    • 如果Cookie存在于浏览器中并且拥有此应用程序的权限(https://security.google.com/settings/security/permissions):同意屏幕将被忽略
    • 如果cookie存在于浏览器中但没有此应用程序的权限:将显示同意屏幕
    • 如果浏览器中不存在Cookie:应用程序将显示'具有离线访问权限

答案 4 :(得分:-1)

根据增量auth机制及其设计,很可能这是非常正常的。想法是如果用户已经授予了应用程序的权限,则无需显示相同的权限并要求用户批准。

http://googleplusplatform.blogspot.com/2013/12/google-sign-in-improvements11.html