当用户从Google Apps Marketplace安装我的Google App时,我最近遇到了问题。
只要安装了应用并且用户点击了"启动应用"按钮被重定向到我的网站,我检查用户是否是管理员。这需要使用OAuth2连接到Google Directory API。
如果我点击"启动应用"按钮一出现,我就会得到一个" 401 Unauthorized"尝试验证用户时Google的回复。但如果我在点击前等待几秒钟,一切正常。
我尝试通过添加5秒的延迟来解决此问题,并在第一次尝试失败时重试。这在许多情况下都有效,但我仍然可以重现错误。
我可以等待另外5秒再试一次,但这当然不是一个理想的解决方案。有没有更好的方法呢?
我正在运行google api java客户端版本1.20.0。
这是我得到的堆栈跟踪:
com.google.api.client.auth.oauth2.TokenResponseException: 401 Unauthorized
at com.google.api.client.auth.oauth2.TokenResponseException.from(TokenResponseException.java:105) ~[google-oauth-client-1.20.0.jar:1.20.0]
at com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed(TokenRequest.java:287) ~[google-oauth-client-1.20.0.jar:1.20.0]
at com.google.api.client.auth.oauth2.TokenRequest.execute(TokenRequest.java:307) ~[google-oauth-client-1.20.0.jar:1.20.0]
at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.executeRefreshToken(GoogleCredential.java:384) ~[google-api-client-1.20.0.jar:1.20.0]
at com.google.api.client.auth.oauth2.Credential.refreshToken(Credential.java:489) ~[google-oauth-client-1.20.0.jar:1.20.0]
at ... my code
正如您所看到的,我正在运行refreshToken()方法。我这样做是为了验证连接是否有效。
答案 0 :(得分:1)
That lag seems to be fairly common, and it's not due to any fault on your end. The best workaround is likely to have some retry logic in your application so you can handle this situation.