google oauth2:为 Web 服务器应用程序上的授权用户重新获取 refresh_token

Posted

技术标签:

【中文标题】google oauth2:为 Web 服务器应用程序上的授权用户重新获取 refresh_token【英文标题】:google oauth2: re-acquiring a refresh_token for an authorized user on a web server application 【发布时间】:2012-05-30 23:53:11 【问题描述】:

我在网络服务器上使用 oauth2,流程完美无缺(https://developers.google.com/accounts/docs/OAuth2WebServer)。

但是,在某些情况下,我需要重新获取 refresh_token(例如,refresh_token 已“丢失”)。

在这种情况下,当我再次通过第 1 和第 2 阶段时,我只会获得 access_token 而不是 refresh_token。 如果用户通过他的谷歌账户控制台撤销权限并再次经历第 1 和第 2 阶段,我将获得一个新的 refresh_token。

这是已知的 oauth2 行为吗?有没有办法强制使用新的 refresh_token 或再次获得相同的?

【问题讨论】:

【参考方案1】:

来自https://developers.google.com/accounts/docs/OAuth2WebServer:

重要提示:当您的应用程序收到刷新令牌时,请务必存储该刷新令牌以供将来使用。如果您的应用程序丢失了刷新令牌,则它必须在获取另一个刷新令牌之前重新提示用户同意。 如果您需要重新提示用户同意,请在授权码请求中包含approval_prompt参数,并将值设置为强制。

【讨论】:

【参考方案2】:

黄油答案是here。您必须在您的令牌发布请求中添加参数approval_prompt=force

【讨论】:

以上是关于google oauth2:为 Web 服务器应用程序上的授权用户重新获取 refresh_token的主要内容,如果未能解决你的问题,请参考以下文章

Google OAuth2 服务帐户 API 授权

使用 oauth2 从防火墙后的 Wildfly/Keycloak 安全 Web 应用程序调用 oauth2 保护 google 应用程序引擎应用程序

oauth2.0授予Web应用访问用户的Google spreadhseets所需的最小范围是多少?

重定向循环中的 Spring Security OAuth2 (google) web 应用程序

使用spring boot app作为资源服务器,google oauth2作为授权服务器

将使用 Google OAuth2.0 的登录电子邮件限制为特定域名