Ошибка запроса токена доступа 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": ""
}
- Я пытался изменить TOKEN_URL на " https://www.googleapis.com/oauth2/v4/token"
- Я попытался сгенерировать новый токен обновления.
- Я попытался создать новый идентификатор клиента OAuth.
Все попытки имели одну и ту же проблему.
Кто-нибудь есть идеи, что не так?
Спасибо за помощь!
1 ответ
Я нашел проблему.
Вероятно, срок действия моего предыдущего токена обновления истек. Я попытался сгенерировать новый, но я неправильно понял процесс, и я рассмотрел параметр "code" как токен обновления.
https://developers.google.com/identity/protocols/OAuth2WebServer