Срок действия токенов обновления Google истекает?

110

Я использовал токен обновления несколько раз за короткий период времени в целях тестирования, но мне интересно, истечет ли срок действия токенов обновления Google? Могу ли я использовать один и тот же токен обновления, чтобы снова и снова получать другой токен доступа в течение длительного периода (недели или даже месяцев)?

Робин Карло Катакутан
источник
вы используете Ruby или у вас есть образец кода для этого?
Thufir

Ответы:

149

Сервер Google Auth выдал токены обновления, срок действия которых никогда не истекает - в этом весь смысл токенов обновления. Токен обновления истечет (или, я бы сказал, станет неавторизованным), когда пользователь отменяет доступ к вашему приложению.

Обратитесь к этому документу, в нем четко указана функция токенов обновления.

Вместо выдачи долговечного токена (обычно годного или неограниченного срока жизни) сервер может выдавать краткосрочный токен доступа и долгоживущий токен обновления. Короче говоря, вы можете использовать токены обновления снова и снова, пока пользователь, авторизовавший доступ, не отменит доступ к вашему приложению.

Тень
источник
6
Часть «годен к году» делает это не так ясно, как вы предполагаете; но поскольку на практике это не вызывает проблем, я предполагаю, что токен обновления вечнозеленый.
mahemoff
54
Истечение срока действия токена Вы должны написать свой код, чтобы предвидеть возможность того, что предоставленный токен может больше не работать. Токен может перестать работать по одной из следующих причин: пользователь отозвал доступ. Токен не использовался полгода. Учетная запись пользователя превысила определенное количество запросов токенов. В настоящее время для одной учетной записи пользователя Google существует ограничение в 25 токенов. Если учетная запись пользователя имеет 25 действительных токенов, следующий запрос аутентификации завершается успешно, но незаметно аннулирует самый старый ожидающий токен без видимых для пользователя предупреждений. (от developers.google.com/accounts/docs/OAuth2 )
bazik
17
«Долгоживущий» токен обновления отличается от «никогда не истекает».
Kapé
1
Итак, как ваш код может проверить, действителен ли ваш токен обновления?
SsjCosty
3
@Shadow Если срок действия токена обновления редко истекает, как было предложено, почему бы Google просто не выпустить токен доступа с неограниченным сроком действия, в первую очередь. Насколько я понимаю, токен доступа, выданный с использованием oAuth 2.0, затем можно использовать для запроса токена обновления. Почему бы просто не иметь постоянный токен доступа и убрать лишний вызов для токена обновления.
Чарльз Робертсон
62

Это очень запутанная тема. Первый ответ кажется правильным, но на самом деле он не цитирует ничего авторитетного из Google.

Самый точный ответ, который я нашел, на самом деле находится на игровой площадке разработчика, где вы получаете токен. На шаге 2 внизу есть примечание:

«Примечание. OAuth Playground не хранит токены обновления, но поскольку срок действия токенов обновления никогда не истекает, пользователь должен перейти на страницу авторизованного доступа к своей учетной записи Google, если он хочет отозвать их вручную».

https://developers.google.com/oauthplayground/

Джош Хантер
источник
2
лучший ответ здесь - невероятно, почему никто не проголосовал за - большое спасибо - относитесь к токенам обновления так, как будто они никогда не истекают - однако при входе в систему проверяйте наличие нового, если пользователь отменяет токен обновления, в этом сценарии Google предоставит новый токен обновления при входе, так что просто обновите токен обновления
danday74
14

Я не думаю, что это полностью правда:

Обратите внимание, что существуют ограничения на количество выпускаемых токенов обновления; одно ограничение на комбинацию клиент / пользователь и другое на пользователя для всех клиентов. Вы должны сохранить токены обновления в долгосрочном хранилище и продолжать использовать их, пока они остаются действительными. Если ваше приложение запрашивает слишком много токенов обновления, оно может выйти за эти ограничения, и в этом случае старые токены обновления перестанут работать.

с этой страницы: https://developers.google.com/youtube/v3/guides/authentication#installed-apps

Это из документов youTube (которые, как я считаю, намного лучше, чем другие документы api), но я думаю, что это одинаково для всех приложений Google.

Путешественники
источник
5

посмотри это:

Токены обновления действительны до тех пор, пока пользователь не отзовет доступ. Это поле присутствует только в том случае, если в запрос кода авторизации включен access_type = offline.

в https://developers.google.com/accounts/docs/OAuth2WebServer

Карл
источник
5

Правила изменились где-то в 2017 году, поэтому я думаю, что лучший ответ - это зависит от продукта. Например, в API Gmail срок действия токена обновления Oauth 2.0 истекает после смены пароля. См. Этот https://support.google.com/a/answer/6328616?hl=en

Раньше мы заранее настраивали доступ к API и генерировали токены обновления при настройке НОВЫХ пользователей Gmail, а затем мы могли архивировать их почту (мы обязаны делать это по закону), но теперь, как только они меняют свой пароль, токен обновления аннулирован.

Возможно, для youtube, maps токен обновления по-прежнему действительно долгоживущий, но для gmail api рассчитывайте на короткий токен.

TonyE
источник
Похоже , он стал официальным на 5 октября 2016 года developers.googleblog.com/2016/09/...
Тоние
2

Основная идея токена обновления заключается в том, что он долговечен и никогда не истекает.

У токена доступа есть время истечения срока действия, и он истекает, как только он истекает, мы можем использовать токен обновления, который будет использоваться снова и снова, пока пользователь не отзовет свою учетную запись.

Шивен Оджа
источник
0

Прочтите это по адресу : https://developers.google.com/identity/protocols/oauth2#expiration. Вы должны написать свой код, чтобы предвидеть возможность того, что предоставленный токен обновления может больше не работать. Токен обновления может перестать работать по одной из следующих причин:

Пользователь отозвал доступ вашему приложению. Токен обновления не использовался в течение шести месяцев. Пользователь изменил пароли, и токен обновления содержит области Gmail. В учетной записи пользователя превышено максимальное количество предоставленных (действующих) токенов обновления. В настоящее время существует ограничение в 50 токенов обновления на учетную запись пользователя для каждого клиента. Если предел достигнут, создание нового токена обновления автоматически аннулирует самый старый токен обновления без предупреждения. Это ограничение не распространяется на сервисные аккаунты.

Также существует больший лимит на общее количество токенов обновления, которые может иметь учетная запись пользователя или сервисная учетная запись для всех клиентов. Большинство обычных пользователей не превысит этот предел, но тестовая учетная запись разработчика может.

Йос Луйтен
источник
-2

Я провел дополнительное исследование, и мне кажется, что токен доступа Google используется для получения токена обновления во время первого «автономного» запроса. С этого момента токен обновления используется для выпуска нового токена доступа. Идея состоит в том, что токен доступа - это краткосрочный токен, но его можно продлить с помощью долгосрочного токена обновления. Это устраняет необходимость запрашивать переменную кода URL, которая требует подхода с двумя конечными точками и должна быть инициирована с использованием запроса на основе реферера:

http://www.jensbits.com/2012/01/09/google-api-offline-access-using-oauth-2-0-refresh-token/

Некоторые службы REST API, такие как Dropbox, выдают вечные токены доступа, но Google выдает краткосрочные токены доступа. PayPal использует компромисс, позволяя извлекать токены доступа без принудительного применения реферера URI. Это означает, что токены доступа можно получить без необходимости щелкать ссылку, чтобы начать процесс. Методология Google означает, что процедуры API следует вызывать только при необходимости. По сути, вызовы инициируются через процедуры на основе реферера. Это контролируется выпуском кратковременных токенов доступа или токенов доступа, которые необходимо обновлять в цепочке. Это требует от разработчиков более тщательного обдумывания того, как должна работать система.

Чарльз Робертсон
источник