Ошибка запроса токена доступа Google OAuth 2.0

У меня есть небольшой проект Google App Engine на GitHub, который я "закончил" несколько месяцев назад.

Это работало до сих пор (последнее использование было 2-3 месяца назад), но, похоже, Google что-то изменил, и я не понимаю, в чем настоящая проблема и как я могу ее решить.

Проблема в этом файле (строка 59): Файл

Код:

public class TokenManager {

static private final String TOKEN_URL = "https://www.googleapis.com/oauth2/v3/token";
static private final String ENC = "UTF-8";

private String _refreshToken;
private String _clientId;
private String _clientSecret;

private final Gson _gson = new Gson();
private TokenData _tokenData = new TokenData();

...

private void refreshAccessToken() throws Exception {
    String payload = "client_secret=$client_secret&grant_type=refresh_token&refresh_token=$refresh_token&client_id=$client_id";
    payload = payload.replace("$client_secret", URLEncoder.encode(_clientSecret, ENC));
    payload = payload.replace("$refresh_token", URLEncoder.encode(_refreshToken, ENC));
    payload = payload.replace("$client_id", URLEncoder.encode(_clientId, ENC));

    HTTPRequest request = new HTTPRequest(new URL(TOKEN_URL), HTTPMethod.POST);
    request.setPayload(payload.getBytes(ENC));

    String stringData = new String(URLFetchServiceFactory.getURLFetchService().fetch(request).getContent(), ENC);

    _tokenData = _gson.fromJson(stringData, TokenData.class);
}

}

Проблема заключается в запросе токена доступа. (Я использую токен автономного обновления.)

Ответ таков:

{
    "error": "invalid_grant",
    "error_description": "Bad Request",
    "error_uri": ""
}
  1. Я пытался изменить TOKEN_URL на " https://www.googleapis.com/oauth2/v4/token"
  2. Я попытался сгенерировать новый токен обновления.
  3. Я попытался создать новый идентификатор клиента OAuth.

Все попытки имели одну и ту же проблему.

Кто-нибудь есть идеи, что не так?

Спасибо за помощь!

1 ответ

Я нашел проблему.

Вероятно, срок действия моего предыдущего токена обновления истек. Я попытался сгенерировать новый, но я неправильно понял процесс, и я рассмотрел параметр "code" как токен обновления.

https://developers.google.com/identity/protocols/OAuth2WebServer

Другие вопросы по тегам