【发布时间】:2015-10-04 15:30:16
【问题描述】:
当用户从 Google Apps Marketplace 安装我的 Google 应用时,我最近开始遇到问题。
一旦安装了应用程序并且用户单击“启动应用程序”按钮以重定向到我的网站,我就会检查用户是否是管理员。这需要使用 OAuth2 连接到 Google Directory API。
如果我在“启动应用”按钮出现后立即点击它,我会在尝试验证用户时收到来自 Google 的“401 Unauthorized”响应。但是,如果我在点击之前等待几秒钟,一切都会正常。
我尝试通过添加 5 秒的延迟并在第一次尝试失败时重试来解决此问题。这在很多情况下都有效,但我仍然能够重现该错误。
我可以再等 5 秒钟再试一次,但这当然不是一个理想的解决方案。有更好的方法吗?
我正在运行 1.20.0 版的 google api java 客户端。
这是我得到的堆栈跟踪:
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() 方法。我这样做是为了验证连接是否有效。
【问题讨论】:
标签: google-apps google-api-java-client google-apps-marketplace google-directory-api