错误:invalid_grant,用于使用刷新令牌获取访问令牌

问题描述 投票:0回答:2
谷歌搜索后我们发现 invalid_grant 意味着刷新令牌无效。

链接到 google oauth 文档

我们没有谷歌提到的任何这些问题。此错误是否与刷新令牌以外的其他内容有关。

更多信息

我们可以阅读、编写电子表格和发送 Gmail

我们为每个请求获取访问令牌 任何帮助将不胜感激。

我们已经投入生产并通过谷歌验证

google-cloud-platform google-api google-oauth google-sheets-api google-developers-console
2个回答
3
投票
没有看到完整的错误消息

Invalid_grant {Message here}
这很难帮助,但根据我的经验,通常是由以下原因之一引起的。

刷新令牌过期,应用程序未投入生产。

刷新令牌会

过期有多种原因,目前最常见的原因如下。

一个 Google Cloud Platform 项目,其配置了 OAuth 同意屏幕 外部用户类型和发布状态为“测试”时,将颁发刷新令牌,该令牌将在 7 天后过期。

解决方法是转到同意屏幕上的谷歌开发者控制台并将您的应用程序设置为生产,然后您的刷新令牌将停止过期。

invalid_grant:无效的 JWT

{ “error”: “invalid_grant”, “error_description”: “无效的 JWT:令牌必须是短期令牌(60 分钟)且处于合理的时间范围内。检查您的 iat 和 exp 值,并使用有偏差的时钟来解释系统之间的时钟差异。” }

您的服务器时钟与 NTP 不同步。 (解决方法:检查服务器时间,如果不正确请修复。)

invalid_grant:代码已兑换

意味着您正在获取已使用的身份验证代码并尝试为其获取另一个访问令牌/刷新令牌。验证码只能使用一次,并且会过期,因此需要尽快使用。

Invalid_grant:错误的请求

通常意味着您用来刷新访问令牌的客户端 ID 和机密。不是用于创建您正在使用的刷新令牌的令牌。

始终存储最近的刷新令牌。

请记住始终存储最新的刷新令牌。单个用户只能拥有 50 个未使用的刷新令牌,最旧的刷新令牌将过期。根据您使用的语言,刷新访问令牌后可能会向您返回新的刷新令牌。此外,如果您多次请求用户同意,那么您将获得不同的刷新令牌。

用户撤销访问权限

如果用户撤销了您在其 Google 帐户中的访问权限,您的刷新令牌将不再有效。

用户在 Gmail 范围内更改了密码。

如果您的刷新令牌是使用 Gmail 范围创建的,并且用户更改了密码。您的刷新令牌将过期。

链接

Oauth2 Rfc 文档中的 invalid_grant 错误

rfc6749

无效的授权 提供的授权授予(例如,授权 代码、资源所有者凭据)或刷新令牌是 无效、过期、撤销、与重定向不匹配 授权请求中使用的 URI,或发布到 另一位客户。


0
投票
我在使用

RefreshError: ('invalid_grant: Bad Request', {'error': 'invalid_grant', 'error_description': 'Bad Request'})

 包遇到 
gspread
 时遇到了这个问题 - 问题是 
authorized_user.json
 中的陈旧 
~/.config/gspread/
 - 删除它后工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.