# #google-cloud-platform #google-oauth #google-workspace #google-identity
Вопрос:
За последние 3 недели у нас было большое количество сбоев при обновлении маркера доступа с помощью Google Oauth API. Мне не удалось понять, почему это произошло, как это никогда не случалось со мной до сегодняшнего дня.
Когда я попытался обновить свой токен, я получил следующий HTTP-ответ от Google OAuth API:
{
"error": "invalid_grant",
"error_description": "Token has been expired or revoked."
}
В документации есть раздел, объясняющий срок действия токена обновления: https://developers.google.com/identity/protocols/oauth2#expiration
- Пользователь отозвал доступ к вашему приложению.
- Токен обновления не использовался в течение шести месяцев.
- Пользователь изменил пароли, и маркер обновления содержит области действия Gmail.
- Учетная запись пользователя превысила максимальное количество предоставленных (активных) токенов обновления.
- Пользователь принадлежит к организации Google Cloud Platform, в которой действуют политики управления сеансами.
Я отправился в https://myaccount.google.com/permissions страница. Поскольку мое приложение все еще было в списке, это подтверждает, что я не отменял доступ к своему приложению вручную.
Доступ был предоставлен 4 июня 2021 года, то есть 3 дня назад (на момент написания статьи), таким образом, это не потому, что токен обновления не использовался в течение шести месяцев.
Я не менял свой пароль, и приложение не использует области действия Gmail, только следующие:
- https://www.googleapis.com/auth/userinfo.email
- https://www.googleapis.com/auth/userinfo.profile
- openid
- https://www.googleapis.com/auth/contacts.readonly
- https://www.googleapis.com/auth/calendar.readonly
- https://www.googleapis.com/auth/calendar.events
Я не знаю, как я могу проверить, что я превысил максимальное количество предоставленных токенов обновления. Но я считаю, что нет, так как другие приложения, для которых я связан с Google, работают идеально.
Единственный оставшийся элемент, который я должен проверить, — это политики управления сеансами, действующие в моей организации GCP.
Но поскольку проблема довольно новая, мне было интересно, развернул ли Google что-то новое в API Oauth (идентификация), что может привести к истечению срока действия токенов обновления.
Кто-нибудь сталкивался с этой проблемой в последнее время?
Обновление: действующие политики управления сеансами не требуют повторной аутентификации.
Ответ №1:
Это то, что появилось за последние четыре месяца, да, я думаю, что это что-то новое, и от Google пока не было никаких официальных сообщений об этом.
Срок действия токенов обновления для приложений, которые все еще находятся в стадии тестирования и не прошли проверку Google, истечет в течение двух недель.
Комментарии:
1. Когда вы гадаете, вам следует оставить комментарий.
2. На самом деле, это может быть так для приложения для разработки, где со мной произошла проблема. Однако та же проблема возникает в нашем производственном приложении, которое проверено Google. Спасибо @DalmTo
3. @Джонханли, кто сказал, что я угадываю? Это то, что я лично проверил, и есть по крайней мере еще пять вопросов, связанных с этим, если вы хотите так осмотреться. У меня также есть три электронных письма для гуглеров, ожидающих какого-то официального сообщения. Google постоянно вносит изменения, не обновляя документацию.
4. @ben если приложение было проверено, то я бы предположил, что с используемым вами маркером обновления что-то не так. Я бы посмотрел, как вы храните токен обновления, убедитесь, что он хранится правильно и полностью, и вы не отсекаете конец или что-то в этом роде. А также убедитесь, что вы всегда храните самые обиженные, поскольку, по сути, новый может быть возвращен с запросом на токен доступа для обновления.
5. Максимальный размер токенов доступа был увеличен до 2048 байт.