【问题标题】:Getting "401 Unauthorized" error immediately after Google Marketplace app install, but then works安装 Google Marketplace 应用程序后立即出现“401 Unauthorized”错误,但随后有效
【发布时间】: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


    【解决方案1】:

    这种延迟似乎相当普遍,并不是因为您的任何过错。最好的解决方法可能是在您的应用程序中包含一些重试逻辑,以便您可以处理这种情况。

    【讨论】:

    • 谢谢埃里克。添加了更多重试,它似乎工作正常。
    猜你喜欢
    • 2014-02-26
    • 1970-01-01
    • 2019-09-06
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    相关资源
    最近更新 更多