Недавно у меня возникла проблема, когда пользователи установили мое приложение Google из Google Apps Marketplace.
Как только приложение установлено и пользователь нажимает кнопку «Запустить приложение», чтобы перенаправиться на мой сайт, я проверяю, является ли пользователь администратором. Для этого требуется подключение к Google Directory API с использованием OAuth2.
Если я нажму кнопку «Запустить приложение», как только оно появится, я получу ответ «401 Unauthorized» от Google при попытке подтвердить пользователя. Но если я подожду пару секунд, прежде чем нажму, все работает нормально.
Я попытался решить эту проблему, добавив задержку в 5 секунд и повторную попытку, если первая попытка не удалась. Это работает во многих случаях, но мне все же удалось воспроизвести ошибку.
Я мог бы просто подождать еще 5 секунд и попробовать еще раз, но это, конечно, не идеальное решение. Есть ли лучший способ сделать это?
Я использую версию 1.20.0 java-клиента Google API.
Это трассировка стека, которую я получаю:
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(). Я делаю это, чтобы убедиться, что соединение будет работать.