【问题标题】:Debugging "invalid_grant" error with description: "Invalid code."使用描述调试“invalid_grant”错误:“无效代码”。
【发布时间】:2015-12-01 04:53:36
【问题描述】:

我有一个与 IOS 应用程序通信的 Web 服务器,以获取用户的离线访问令牌/刷新令牌对。这似乎一直运作良好,直到最近没有任何代码更改,大多数对谷歌的身份验证请求开始失败。我一直在尝试调试看似不确定地发生的"invalid_grant" 错误。单个用户可能会尝试多次进行身份验证,其中一些尝试被谷歌接受,而另一些则不接受。我们看到的错误形式如下(我们使用的是 google java api 客户端):

com.google.api.client.auth.oauth2.TokenResponseException400 Bad Request { "error" : "invalid_grant", "error_description" : "Invalid code." }
at com.google.api.client.auth.oauth2.TokenResponseException.from(TokenResponseException.java:105)
at com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed(TokenRequest.java:287)
at com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeTokenRequest.execute(GoogleAuthorizationCodeTokenRequest.java:158)

我已尝试确保我们正在运行它的服务器具有与 ntp 正确同步的时钟。

我对如何进行有点不知所措。你会如何调试这个?

【问题讨论】:

  • 我没有专门查看这些帖子,但我很确定它不会重复使用授权代码,因为有时将其交换为访问令牌/刷新令牌对会成功。我们肯定会在 10 分钟内使用访问令牌(应始终在 10 秒内使用)。第二篇文章似乎涉及过期访问令牌而不是离线访问/刷新令牌对的问题。澄清一下:我们看到的问题都是在最初为访问/刷新令牌对交换身份验证代码时。
  • 哦,我还尝试通过 security.google.com 撤销我的应用对我的 google 帐户的访问权限,但没有效果。仍然收到"invalid_grant" 错误。

标签: google-api-java-client


【解决方案1】:

我还尝试使用 java api 客户端缓解此错误,我发现最可能的原因是请求格式错误或用户名或密码无效。换句话说,将正确的密码指向错误的路径(通常在编辑资源后发生)也可以导致它。 有时还可以在连续请求之间提供显着延迟。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多