Чи закінчуються терміни оновлення Google?


108

Я використовував токен оновлення кілька разів лише за короткий період для тестування, але мені цікаво, чи закінчуються терміни оновлення Google? Чи можу я використовувати той же маркер оновлення, щоб отримати ще один і той же маркер доступу протягом тривалого періоду (тиждень чи навіть місяці)?


ви використовуєте рубін, чи у вас є зразок коду для цього?
Туфір

Відповіді:


146

Сервер Google Auth, виданий токенами Refresh, ніколи не закінчується - у цьому вся суть маркерів оновлення. Маркер оновлення закінчується (або я повинен сказати, несанкціонований), коли користувач відкликає доступ до вашої програми.

Зверніться до цього документа, в ньому чітко зазначено функцію оновлення лексем.

Замість того, щоб видавати довготривалий маркер (як правило, хороший протягом року або необмежений термін експлуатації), сервер може видавати маркер короткочасного доступу та довготривалий маркер оновлення. Отже, коротше, ви можете використовувати токни оновлення знову і знову, поки користувач, який авторизував доступ, не скасує доступ до вашої програми.


6
Частина "користь на рік" робить це не зовсім так зрозумілим, як ви пропонуєте; але оскільки це, здається, не створює проблем на практиці, я припускаю, що маркер оновлення є вічнозеленим.
mahemoff

54
Термін дії маркера Ви повинні написати свій код, щоб передбачити можливість того, що наданий маркер може більше не працювати. Маркер може припинити роботу з однієї з таких причин: Користувач відкликав доступ. Маркер не використовується півроку. Обліковий запис користувача перевищив певну кількість запитів маркера. Наразі існує обмеження в 25 токенів для кожного облікового запису користувача Google. Якщо в обліковому записі користувача є 25 дійсних маркерів, наступний запит на аутентифікацію буде успішним, але тихо визнає недійсним найдавніший видатний маркер без будь-якого видимого для користувача попередження. (від developers.google.com/accounts/docs/OAuth2 )
bazik

17
Ток оновлення "довгоживучий" - це щось інше, ніж "ніколи не закінчується".
Капе

1
Тож як ваш код може перевірити, чи ваш маркер оновлення ще дійсний?
SsjCosty

3
@Shadow Якщо маркер оновлення рідко закінчується, як було запропоновано, чому Google просто не видає маркер доступу, який не закінчується, в першу чергу. Наскільки я розумію, маркер доступу, який видається за допомогою oAuth 2.0, може бути використаний для запиту маркера оновлення. Чому б просто не мати постійний маркер доступу та вирізати додатковий дзвінок для оновлення маркера.
Чарльз Робертсон

62

Це дуже заплутана нитка. Перша відповідь здається правильною, але насправді не наводить нічого авторитетного від Google.

Найбільш остаточна відповідь, яку я знайшов, це насправді на майданчику розробника, де ви отримуєте маркер. На другому етапі внизу є примітка, в якій сказано:

"Примітка. Ігровий майданчик OAuth не зберігає маркери оновлення, але оскільки маркери для оновлення ніколи не закінчуються, користувач повинен зайти на сторінку авторизованого доступу до облікового запису Google, якщо він бажає їх вручну відкликати."

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


2
найкраща відповідь тут - чому ніхто не звернувся з пропозицією - це неймовірно - велике спасибі - трактуйте маркери оновлення так, ніби вони ніколи не закінчуються, - проте під час реєстрації перевірити новий, якщо користувач відкликає маркер оновлення, у цьому сценарії Google надасть новий маркер оновлення під час входу, тому просто оновіть маркер оновлення
danday74

14

Я не думаю, що це абсолютно правда:

Зверніть увагу, що кількість обмежених символів оновлення буде обмежена; один ліміт на комбінацію клієнт / користувач та інший на кожного користувача для всіх клієнтів. Ви повинні зберігати маркери оновлення у довготривалому сховищі та продовжувати їх використовувати до тих пір, поки вони залишаються дійсними. Якщо ваша програма вимагає занадто багато токенів оновлення, вона може зіткнутися з цими межами, і в цьому випадку старі маркери оновлення перестануть працювати.

з цієї сторінки: https://developers.google.com/youtube/v3/guides/authentication#installed-apps

Це з документів YouTube (які я вважаю набагато кращими, ніж інші документи api), але я думаю, що це однаково в усіх додатках Google.



5

Правила змінилися цього разу десь у 2017 році, тому найкращою відповіддю, на мою думку, є те, що це залежить від продукту. Наприклад, в Gmail API термін оновлення Oauth 2.0 закінчується при зміні пароля. Дивіться це https://support.google.com/a/answer/6328616?hl=uk

Ми використовували заздалегідь налаштування доступу до API та генерували маркери оновлення, коли ми встановлювали НОВИХ користувачів gmail, а потім ми могли архівувати їхню пошту (про це вимагаємо за законом), але тепер, як тільки вони змінять свій пароль, маркер оновлення відкликається.

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


Схоже, це стало офіційним 5 жовтня 2016 року developers.googleblog.com/2016/09/…
TonyE

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 потрібно викликати лише за потреби. По суті, дзвінки ініціюються через процедури, що базуються на рефераті. Це контролюється шляхом видачі короткочасних жетонів доступу або жетонів доступу, які повинні бути оновлені ланцюжком. Це вимагає від розробників більш ретельно продумати, як система має працювати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.