And*_*ira 105 google-api
invalid_grant尝试从Google获取oAuth令牌以连接到他们的联系人api时,我一直收到错误消息.所有的信息都是正确的,我已经检查过这么难过了.
有谁知道可能导致这个问题的原因?我已经尝试为它设置不同的客户端ID,但我得到相同的结果,我尝试连接许多不同的方式,包括尝试强制验证,但仍然是相同的结果.
aro*_*oth 62
尽管access_type按照bonkydog的回答在我的请求中指定了"离线" ,但我遇到了同样的问题.长话短说我发现这里描述的解决方案对我有用:
https://groups.google.com/forum/#!topic/google-analytics-data-export-api/4uNaJtquxCs
实质上,当您在Google API控制台中添加OAuth2客户端时,Google会为您提供"客户端ID"和"电子邮件地址"(假设您选择"webapp"作为您的客户端类型).尽管Google有误导性的命名惯例,但他们希望您client_id在访问OAuth2 API时将"电子邮件地址"作为参数的值发送.
调用这两个URL时都适用:
请注意,如果您使用"客户ID"而不是"电子邮件地址"来调用第一个URL,则会成功调用.但是,尝试从第二个URL获取持有者令牌时,使用从该请求返回的代码将不起作用.相反,您将收到"错误400"和"invalid_grant"消息.
bon*_*dog 55
当我将用户发送到OAuth时没有明确请求"离线"访问时,我遇到了这个问题"你想让这个应用程序获得触摸你的东西的权限吗?" 页.
确保在请求中指定access_type = offline.
详情请访问:https://developers.google.com/accounts/docs/OAuth2WebServer#offline
(另外:我认为Google在2011年末添加了此限制.如果您之前有旧令牌,则需要将用户发送到权限页面以授权离线使用.)
laa*_*der 50
虽然这是一个老问题,但似乎许多人仍然遇到它 - 我们花了几天时间跟踪这个问题.
在OAuth2规范中,"invalid_grant"对于与无效/过期/撤销令牌(auth grant或刷新令牌)相关的所有错误都是一种包罗万象.
对我们来说,问题是双重的:
用户已经积极撤销对我们应用的访问权限
有道理,但得到这个:撤销后12小时,Google停止在他们的回复中发送错误消息:
“error_description” : “Token has been revoked.”
这是相当误导的,因为你会认为错误消息始终存在,而不是案子.您可以在应用权限页面检查您的应用是否仍然具有访问权限.
用户已重置/恢复其Google密码
2015年12月,Google更改了其默认行为,以便非Google Apps用户重置密码会自动撤消所有用户的应用刷新令牌.在撤销时,错误消息遵循与之前情况相同的规则,因此您只能在前12个小时内获得"error_description".似乎没有任何方法可以知道用户是否手动撤销了访问(有意)或由于密码重置(副作用)而发生了访问.
除此之外,还有无数其他可能导致错误的潜在原因:
我写了一篇简短的文章,总结了每个项目,并提供了一些调试指导,以帮助找到罪魁祸首.希望能帮助到你.
Jas*_*ana 11
如果您正在邮递员 / insomnia 中对此进行测试,并且只是想使其正常工作,请提示:服务器身份验证代码(代码参数)仅适用一次。这意味着如果您在请求中填充任何其他参数并返回 400,您将需要使用新的服务器身份验证代码,否则您将获得另一个 400。
我们尝试了很多方法,最终问题是客户在其 Google 帐户设置中关闭了“不太安全的应用程序访问”。
要打开此功能:
我希望这可以节省一些人的时间!
我遇到了同样的问题.对我来说,我通过使用电子邮件地址(以... @ developer.gserviceaccount.com结尾的字符串)而不是client_id参数值的客户端ID来修复此问题.Google的命名设置令人困惑.
我的问题是我使用了这个 URL:
https://accounts.google.com/o/oauth2/token
Run Code Online (Sandbox Code Playgroud)
当我应该使用这个 URL 时:
https://www.googleapis.com/oauth2/v4/token
Run Code Online (Sandbox Code Playgroud)
这是测试一个想要离线访问存储引擎的服务帐户。
这是一个愚蠢的答案,但对我来说问题是我没有意识到我已经为我的谷歌用户颁发了一个有效的 oAuth 令牌,但我未能存储它。这种情况的解决方案是转到 api 控制台并重置客户端密钥。
对此还有许多其他答案,例如 Reset Client Secret OAuth2 - Do client need to re-grant access?
| 归档时间: |
|
| 查看次数: |
156674 次 |
| 最近记录: |