【问题标题】:Google auth2 asks for permission every time when asking for access to the app每次请求访问应用程序时,Google auth2 都会请求许可
【发布时间】:2018-06-28 12:29:18
【问题描述】:

在不更改我的代码或配置的情况下,现在每次用户尝试对我的应用进行身份验证时,谷歌都会要求用户授予权限。即使用户已经授予访问权限并且范围没有改变。

我没有收到任何错误,并且登录工作正常,只是现在每次都会出现要求权限的 google 对话框。

为了初始化 google,我使用 gapi.auth2.init 和“https://www.googleapis.com/auth/plus.profile.emails.read”作为范围。 为了请求访问,我使用 auth2.grantOfflineAccess

我还在我的 Google 帐户中检查了具有访问权限的应用程序,并且该应用程序已在其中成功注册。

其他人看到过这个问题吗?或者知道谷歌是否改变了他们处理权限的方式?

【问题讨论】:

  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建最小、完整和可验证的示例。

标签: google-api google-oauth google-authentication


【解决方案1】:

我相信我看到了类似的行为...身份验证流程已开始要求用户在每次登录时向范围授予应用程序权限。以前,它只会从登录开始授予权限用户第一次登录应用程序。我最近没有更改请求的范围和底层代码......但也有一段时间没有使用该应用程序(几个月?)

我正在使用 oAuth2 服务器端身份验证和 grantOfflineAccess() 概述 here 。 鉴于没有发布实施细节,我无法判断我找到的修复是否适用于您的情况。 我发现的更正...以便身份验证只要求用户在他们第一次登录应用程序时授予权限是在调用 getOfflineAccess() 时显式指定“提示”属性。

    var auth2 = gapi.auth2.getAuthInstance(); 

    auth2.grantOfflineAccess({
        prompt : 'select_account'
    }
    ).then(signInCallback);

【讨论】:

  • 添加“提示”属性就可以了。感谢您的回答
  • 这对我有用!谢谢你。您还可以在提示后添加 login_hint: current_email(如果您已经知道 current_email 是什么)以预先选择正确的帐户。
  • 此解决方案适用于 >99% 的情况,但我看到一个未知的极端情况会导致 InvalidGrantError
  • 为什么不提示:无?
【解决方案2】:
https://developers.google.com/identity/protocols/OAuth2WebServer#offline

检查第1步提示参数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-19
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多