即使 access_type=offline,OAuth2.0 也无法获取刷新令牌

Posted

技术标签:

【中文标题】即使 access_type=offline,OAuth2.0 也无法获取刷新令牌【英文标题】:OAuth2.0 cannot get refresh token even when access_type=offline 【发布时间】:2013-09-02 08:57:31 【问题描述】:

我在documentation 上看到您需要设置access_type=offline 才能获得刷新令牌。

我确实在 OAuth url 中设置了这个值,我清楚地看到它与其他参数一起正确设置。但是,我仍然没有得到刷新令牌作为响应。我从 this documentation 复制并粘贴了 OAuth2 相关代码。

【问题讨论】:

【参考方案1】:

这是您将参数更改为access_type=offline 后第一次对应用程序进行授权吗?当客户端单击授权按钮授予您访问权限时,您只会检索一次刷新令牌。

一种解决方法是设置另一个参数approval_prompt=force,以便用户始终单击授权按钮,并且您始终可以获得刷新令牌。否则,请在本地保存刷新令牌,这样您就不必再次检索它。

【讨论】:

请将刷新令牌保存在本地,不要重复为同一用户生成刷新令牌。 Google 对每个用户实施令牌上限。发生这种情况时,事情会以奇怪的方式意外中断。 一个相关且非常有用的线程,***.com/questions/10827920/…。当我在本地开发时,我有类似if DEBUG: flow.params['approval_prompt'] = 'true' 的东西。

以上是关于即使 access_type=offline,OAuth2.0 也无法获取刷新令牌的主要内容,如果未能解决你的问题,请参考以下文章

通过 api 获取谷歌分析报告

当 access_type=online 时,“此应用程序希望:具有离线访问权限”

将 URI 字符串解析为名称-值集合

托管到IIS后无法启动浏览器访问被拒绝

如何通过grantOfflineAccess从response_code返回refresh_token

【Google pay接入】获取refresh_token