【发布时间】: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"错误。