Моему приложению требуется доступ к данным пользователя, даже если его нет. Таким образом, мой запрос на код авторизации включает access_type=offline
, что означает, что я верну токен обновления, если это первый раз, когда пользователь аутентифицирует мое приложение. Я сохраняю токен обновления и использую его позже.
Все работает как положено и неплохо. Но что меня беспокоит, так это заявление в документации:
Обратите внимание, что существуют ограничения на количество выпускаемых токенов обновления; один лимит на комбинацию клиент / пользователь, и еще один на использование для всех клиентов. Вы должны сохранить токены обновления в долгосрочном хранилище и продолжать использовать их, пока они остаются действительными. Если ваше приложение запрашивает слишком много токенов обновления, оно может выйти за эти ограничения, и в этом случае старые токены обновления перестанут работать.
Если я правильно понимаю, возможно, сохраненный мной токен обновления станет недействительным, если пользователь авторизует слишком много приложений ?! Это верно? Как приложение должно реагировать в таких ситуациях? Запросить еще один токен обновления?
Заранее спасибо.
РЕДАКТИРОВАТЬ: Я создал тестовый PHP-скрипт, который будет запрашивать токены обновления от 4-х клиентов Google (под клиентом я имею в виду сгенерированные учетные данные в консоли Dev). Три из них связаны с одним адресом Gmail, а четвертый - с другим. Для первого письма я создал 2 проекта, а для первого - 2 идентификатора клиентов. Так:
- электронная почта
X
, проектA
, идентификатор клиентаabc
- электронная почта
X
, проектA
, идентификатор клиентаdef
- электронная почта
X
, проектB
, идентификатор клиентаmno
- электронная почта
Y
, проектC
, идентификатор клиентаxyz
Я начал тест с запроса токена обновления для каждого клиента. Затем я запросил еще 24 токена обновления для первого идентификатора клиента abc
. На этом этапе все токены обновления были действительны, хотя для электронной почты X
у меня было 27 токенов обновления. Затем, когда я запросил еще один токен обновления для клиента с идентификатором abc
, первый токен для этого клиента стал недействительным, поэтому достигнуто ограничение в 25 токенов на комбинацию электронной почты / клиента. Все остальные токены были по-прежнему действительны, и мне удалось сгенерировать новые токены для клиента def
. Этот клиент предназначен для того же проекта A
и того же адреса электронной почты X
. Так что я не могу выйти на второй предел. Что означают эти утверждения, для меня до сих пор остается загадкой:
https://developers.google.com/accounts/docs/OAuth2#expiration.
Если вам необходимо авторизовать несколько программ, машин или устройств, можно решить проблему, чтобы ограничить количество клиентов, которые вы авторизуете для каждой учетной записи пользователя, до 15 или 20. Если вы являетесь администратором Google Apps, вы можете создать дополнительных пользователей-администраторов и использовать их. для авторизации некоторых клиентов.
https://developers.google.com/accounts/docs/OAuth2WebServer#refresh
Обратите внимание, что существуют ограничения на количество выпускаемых токенов обновления; одно ограничение на комбинацию клиент / пользователь и другое ограничение на пользователя для всех клиентов.