Приложението ми има нужда от достъп до данните на потребителя дори когато потребителят не присъства. Така че моята заявка за код за оторизация включва access_type=offline
, което означава, че ще получа обратно токен за опресняване, ако това е първият път, когато потребителят удостоверява приложението ми. Запазвам маркера за опресняване и го използвам по-късно.
Всичко работи според очакванията и доста добре. Но това, което ме притеснява, е изявление в документацията:
Имайте предвид, че има ограничения за броя на токените за опресняване, които ще бъдат издадени; едно ограничение за комбинация клиент/потребител и друго за използване във всички клиенти. Трябва да запазите маркерите за опресняване в дългосрочно хранилище и да продължите да ги използвате, докато остават валидни. Ако вашето приложение изисква твърде много токени за опресняване, то може да навлезе в тези ограничения, в който случай по-старите токени за опресняване ще спрат да работят.
Ако разбирам това правилно, възможно е маркерът за опресняване, който запазвам, да стане невалиден, ако потребителят разреши твърде много приложения?! Дали това е правилно? Как трябва да реагира приложението в такива ситуации? Да поискате друг маркер за опресняване?
Благодаря предварително.
РЕДАКТИРАНЕ: Създадох тестов PHP скрипт, който иска токени за опресняване от 4 клиента на Google (под клиент имам предвид генерирани идентификационни данни в конзолата за разработка). Три от тях са свързани с един 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
Имайте предвид, че има ограничения за броя на токените за опресняване, които ще бъдат издадени; едно ограничение за комбинация клиент/потребител и друго за потребител за всички клиенти.