OAuth: опис протоколу простою та зрозумілою мовою. Альтернатива сервісним обліковим записам. Токени доступу та оновлення

Існує безліч способів поширення шкідливого спаму у ВКонтакті. Але шкідники не дрімають, у їхні голови приходять дедалі більше цікавих ідей. І виявилася дуже доречною. Шахраї навчилися користуватися ним для обходу сторінки попередження про шкідливі сайти.

А все почалося з того, що одного разу на моїй стіні з'явилося таке повідомлення:


З цікавості перейшов на заслання і потрапив на черговий фішинговий сайт. Але мені здалося дивним саме посилання, воно мало вигляд (половина символів в ASCII):
vkontakte.ru/away.php? to=http%3A%2F%2FApi.vKontakte.Ru%2F%2Fo%2561u%2574%…

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

Що означає кожен із параметрів:

  • client_id - ID додатку, що вимагає авторизацію;
  • redirect_uri - адреса, на яку буде передано access_token (за допомогою редиректу);
  • display - вид вікна авторизації (page, popup, touch та wap).
Власне, в redirect_uri містилася адреса фішинг сайту. Так як у параметрі display була допущена помилка (у нього йшло сміття "?390852"), вікно авторизації не виводилося, а відразу йшов редирект на фішинг сайт з параметрами: error=invalid_request&error_description=Invalid+display+passed

У цьому й полягає весь сенс обходу блек-листа шкідливих сайтів ВКонтакте. З'являється лише алерт про перехід на api.vk.com. І в результаті переходу ми прямо потрапляємо на фішинг сайт, який є в чорному списку. При переході за посиланням vkontakte.ru/away.php?to=vgostivk.dyndns**:

Як виявилося, додаток, що нібито вимагає авторизацію висіло на зламаному користувачі:

Та й сам фішинг сайт був влаштований досить цікаво. Дизайн за звичаєм був контактівським і пропонував авторизуватися. Я пройшов авторизацію через рандомну пошту та пароль, фейк чудово проковтнув. Далі було ще цікавіше, на головній з'явилася новина від «Павла Дурова»:

Після натискання на кнопку «Створити персональний лічильник», відбувся чудовий прогрес-бар. Потім було запропоновано вказати свій номер та надіслати sms:

За ідеєю після успішної «активації» мало перекинути на сторінку activ.php, але я не зміг потрапити туди. Витяги з JS скриптів фішинг сайту:

...
if (req.status == 200) (
// якщо статус 200 (ОК) – видати відповідь користувачу
if (req.responseText == "ok") (
//statusElem.innerHTML = "Всі гуд!";
get_activation();
}
if (req.responseText == "not" ) (statusElem.innerHTML = "Неправильний код активації";}
//statusElem.innerHTML = "Відповідь сервера: "+req.responseText;
...
function get_activation() (
document .location="activ.php" ;
}

* Цей source code був highlighted with Source Code Highlighter.


Підсумок: Шахраї використовують обхід попереджень через OAuth 2.0, отримують пароль та email користувача, та ще й намагаються розвести на відправлення sms(Швидше за все використовуючи систему передплат).
  1. Відкриття вбудованого браузера зі сторінкою авторизації
  2. Користувач запитує підтвердження видачі прав
  3. У разі згоди користувача, браузер редагується на сторінку-заглушку у фрагменті (після #) URL якої додається access token
  4. Програма перехоплює редирект і отримує access tokenз адреси сторінки
Цей варіант вимагає підняття у програмі вікна браузера, але не вимагає серверної частини та додаткового викликусервер-сервер для обміну authorization codeна access token.
приклад
Відкриваємо браузер зі сторінкою авторизації:
> GET /oauth/authorize?response_type=token&client_id=464119 HTTP/1.1 > Host: connect.mail.ru

Після того, як користувач видасть права, відбувається редирект на стандартну сторінку-заглушку, для Mail.Ru це connect.mail.ru/oauth/success.html:
< HTTP/1.1 302 Found < Location: http://connect.mail.ru/oauth/success.html#access_token=FJQbwq9&token_type=bearer& expires_in=86400&refresh_token=yaeFa0gu

Додаток повинен перехопити останній редирект, отримати з адреси acess_tokenта використовувати його для звернення до захищених ресурсів.

Авторизація за логіном та паролем

Авторизація за логіном та паролем представляє простий POST-запит, в результаті якого повертається access token. Така схема не є нічого нового, але вставлена ​​в стандарт для спільності і рекомендується до застосування тільки, коли інші варіанти авторизації не доступні.
приклад
> POST /oauth/token HTTP/1.1 > Host: connect.mail.ru > Content-Type: application/x-www-form-urlencoded > > grant_type=password&client_id=31337&client_secret=deadbeef&username=api@corp.mail.ru& password qwerty< HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"SlAV32hkKG", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"8xLOxBtZp8", < }
Опис у специфікації

Відновлення попередньої авторизації

Зазвичай, access tokenмає обмежений термін придатності. Це може бути корисно, наприклад, якщо він передається по відкритим каналам. Щоб не змушувати користувача проходити авторизацію після закінчення терміну дії access token"а, у всіх перерахованих вище варіантах, на додаток до access token"у може повертатися ще refresh token. По ньому можна отримати access tokenза допомогою HTTP-запиту, аналогічно авторизації за логіном та паролем.
приклад
> POST /oauth/token HTTP/1.1 > Host: connect.mail.ru > Content-Type: application/x-www-form-urlencoded > > grant_type=refresh_token&client_id=31337&client_secret=deadbeef&refresh_token=8xLOx< HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"Uu8oor1i", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"ohWo1ohr", < }

В результаті цього клієнтська програма, що використовує AdWords API, може отримати доступ до облікового запису AdWords без адреси електронної поштита пароля користувача.

Створення облікових даних OAuth2

Щоб створити облікові дані OAuth2, виконайте наведені нижче дії.

Визначення типу програми

По-перше, потрібно визначити тип програмиВи хочете створити. В AdWords API існує два типи програм:

  • встановлюваний додаток(рекомендується);
  • веб-додаток.

За допомогою наведеної нижче таблиці визначте потрібний типпрограми.

Що потрібно обрати Ситуація
Встановлюваний додаток(рекомендується)
  • Ви керуєте обліковими записами AdWords за допомогою одного керуючого облікового запису верхнього рівня.
  • Ви тільки починаєте роботу або хочете швидко розпочати роботу.
  • Ваша програма буде працювати з одним набором облікових записів AdWords з кількома користувачами.
Веб-додаток
  • Ви хочете здійснювати аутентифікацію, щоб надавати різним користувачамрізні права доступу до даних облікового запису AdWords.
  • Вам потрібно створювати кілька наборів облікових даних, наприклад, для керування обліковими записами.
  • Ваша програма потребує URL зворотного дзвінка, які не підтримуються у встановлюваних програмах.
Увага!Навіть якщо ви розробляєте веб-додаток, все одно можна вибрати програму, що встановлюється. Основна відмінність у тому, чи потрібно здійснювати зворотний виклик після видачі токена. Наприклад, якщо ви використовуєте один керуючий обліковий запис верхнього рівня для керування всіма обліковими записами AdWords, встановлювану програму необхідно зареєструвати, навіть якщо клієнтська програма доступна через Інтернет. Примітка.розглядаються нижче. Якщо вам не потрібні функції облікового запису, ми рекомендуємо використовувати процес авторизації для встановлюваного або веб-програми.

Створення ідентифікатора та секретного коду клієнта

Визначивши тип програми, натисніть на відповідну вкладку нижче та дотримуйтесь інструкцій щодо створення ідентифікатора та секретного кодуклієнта.

Встановлюваний додаток

  1. Відкрийте
  2. Створити проект Створити.
  3. Створити облікові дані, а потім - Ідентифікатор клієнта OAuth.
  4. Зберегти
  5. В розділі Тип програмиВиберіть Інші типита вкажіть необхідну інформацію.
  6. Натисніть Створити.
  7. ідентифікаторі секретний ключ
Веб-додаток
  1. Відкрийте
  2. У розкривному меню проектів виберіть Створити проект, потім вкажіть назву проекту та за потреби змініть його ідентифікатор, після чого натисніть кнопку Створити.
  3. На сторінці "Облікові дані" виберіть Створити облікові дані, а потім - Ідентифікатор клієнта OAuth.
  4. Вам може бути запропоновано вказати назву продукту. У цьому випадку натисніть Налаштувати вікно запиту доступу, вкажіть потрібну інформацію та натисніть Зберегти, щоб повернутися до екрана "Облікові дані".
  5. В розділі Тип програмиВиберіть Веб-додаток. Дотримуючись інструкцій, вкажіть джерела JavaScript та/або URI перенаправлення.
  6. Натисніть Створити.
  7. На сторінці, що з'явилася, скопіюйте ідентифікаторі секретний ключклієнта – вони знадобляться вам під час налаштування клієнтської бібліотеки.

Дотримуючись наведених нижче інструкцій, налаштуйте використання облікових даних OAuth2 з клієнтською бібліотекою вашої мови.

Примітка.Якщо ви вирішите не використовувати одну з наших клієнтських бібліотек, вам потрібно буде реалізувати процеси для або самостійно.

OAuth2 Playground

Альтернативний варіант створення облікових даних OAuth2 полягає у використанні OAuth2 Playground. У поєднанні з Google API Console ця система дозволяє самостійно створювати токени OAuth2.

Система OAuth2 Playground призначена для тих користувачів, яким потрібний доступ до облікових записів тільки для одногокеруючого облікового запису або користувача AdWords. Якщо вам потрібно запитати облікові дані для кількох користувачів, краще використовувати клієнтські бібліотеки, як описано вище.

Налаштування

Попередження.Щоб використати OAuth2 PlaygroundВам необхідно створити ідентифікатор клієнтадля . Це єдинийтип програм, що працює з OAuth2 Playground. Докладніше читайте в розділі вище.

Як отримати ідентифікатор та секретний ключ клієнта

  1. Відкрийте
  2. У розкривному меню виберіть існуючий проект або створіть новий.
  3. На сторінці "Облікові дані" виберіть Створити облікові дані, а потім - Ідентифікатор клієнта OAuth.
  4. В розділі Тип програмиВиберіть Веб-додаток.
  5. У розділі додайте наступний рядок: https://сайт/oauthplayground
  6. Натисніть Створити.
  7. Запишіть ідентифікаторі секретний ключклієнта, вказані на сторінці. Вони знадобляться вам на наступному етапі.

Як створити токени

Попередження.Від того, в якій обліковий запис Googleви увійшли до браузера, залежить те, до яких облікових записів AdWords ви зможете отримати доступ за допомогою створених облікових даних OAuth2. Можливо, краще виконати ці дії в режимі інкогніто або без входу до облікового запису Google. Цілком імовірно, що вам потрібно використовувати облікові дані, які не стосуються облікового запису, в якому ви знаходилися, коли отримували ідентифікатор та секретний ключ клієнта.

Як прибрати OAuth2 Playground з ідентифікатора клієнта

Оскільки у вас уже є токен оновленняВам більше не потрібно використовувати OAuth2 Playground як дозволений URI перенаправлення. Щоб видалити цю систему зі списку, виконайте такі дії:

  1. Перейдіть до .
  2. У розкривному меню виберіть проект.
  3. Виберіть назву ідентифікатора клієнта на сторінці "Облікові дані".
  4. Видаліть https://сайт/oauthplayground у полі Дозволені URI перенаправлення. Зверніть увагу, що необхідно залишити хоча б один URI перенаправлення.
  5. Натисніть Зберегти.

Отже, у вас є облікові дані OAuth. Тепер можна здійснювати запити AdWords API та використовувати для потрібної клієнтської бібліотеки.

Сервісні облікові записи OAuth2

У цьому розділі описано порядок доступу до AdWords API за допомогою сервісних облікових записів.

Сервісний обліковий запис – це обліковий запис, що належить додатку, а не окремому. кінцевого користувача. Сервісні облікові записи забезпечують взаємодію між веб-програмою та сервісом Google. Ваша програма викликає API від імені сервісного облікового запису без прямого залучення користувачів.

AdWords API дозволяє доступ до сервісного облікового запису через домени G Suite .

У сервісному обліковому записі реалізований процес OAuth2, в якому замість авторизації користувача застосовується файл ключа, доступний тільки вашому додатку.

Застосування сервісних облікових записів дає дві істотні переваги:

  • Авторизація доступу додатку до API Googleздійснюється на етапі налаштування. Це дозволяє уникнути труднощів, пов'язаних із необхідністю втручання користувача або кешування токенів в інших потоках OAuth2.
  • Уособлення інших користувачів у додатку при необхідності здійснюється в рамках процесу затвердження OAuth2.
Примітка. Якщо ви не використовуєте спеціальні функціїдомену, наприклад уособлення, замість сервісних облікових записів настійно рекомендується застосовувати процес для . У рамках процесів для встановлюваних та веб-додатків OAuth2 участь користувача потрібна лише один раз – у момент надання доступу до облікового запису.

Альтернатива сервісним обліковим записам

Сервісні облікові записи широко застосовуються для забезпечення програмного доступудо API за протоколом OAuth2 без втручання користувача.

Однак налаштувати такі облікові записи для роботи з AdWords API непросто. Простішою альтернативоює із збереженим токеном оновлення. Такий підхід дозволяє застосуванню будь-якої миті запитувати нові токени доступу.

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

Вимоги

  • Домен G Suite, що належить вам, наприклад mydomain.com або mybusiness.com.
  • Токен розробника AdWords API та бажано тестовий обліковий запис.
  • для мови, що використовується.

Налаштування доступу для клієнтського облікового запису

По-перше, необхідно створити ключ службового облікового запису в Google API Console.

  1. Увійдіть до облікового запису G Suite, відкрийте .
  2. У розкривному меню проектів виберіть Створити проект, потім вкажіть потрібну інформацію та натисніть кнопку Створити. Новий проектз'явиться у списку активних.
  3. У меню у лівому верхньому куткуВиберіть IAM та адміністрування, а потім - Сервісні облікові записиу меню зліва.
  4. Натисніть Створити сервісний обліковий записвгорі сторінки.
  5. Вкажіть назву сервісного облікового запису.
  6. Встановіть прапорець Створити новий закритий ключ та виберіть тип ключа JSON.
  7. Встановіть прапорець Увімкнути делегування доступу до даних у домені G Suiteта вкажіть назву продукту для вікна запиту доступу.
  8. Натисніть Створити. Запуститься завантаження файлу ключа JSON. Збережіть файл у надійному місці, куди ви маєте доступ.
  9. На сторінці Сервісні облікові записиз'явиться новий сервісний обліковий запис.
Примітка. Оскільки уособленням користувачів можна керувати тількина рівні домену, для того щоб використовувати сервісні акаунти та процес затвердження службами Google OAuth2, вам знадобиться власний домен, зареєстрований у G Suite. Всі користувачі домену, які використовують обліковий запис сервісу з відповідними дозволами, можуть уособлювати будь-якого користувача домену.

Проблеми безпеки

Оскільки керування G Suite здійснюється на рівні домену, необхідно надійно захистити файл ключа, який забезпечує доступ авторизованих облікових записів до сервісам Google. Це особливо важливо у зв'язку з тим, що ми надаємо обліковому запису сервісу можливість уособлювати будь-якого користувача домену.

Крім того, рекомендується надавати кожному обліковому запису сервісу лише один API Google. Для цього використовується поле scope, Який описується в наступному розділі. Така профілактичний західдозволяє обмежити обсяг даних, відкритий для несанкціонованого доступу у разі компрометації файлу ключа.

Як надати можливості уособлення

Щоб надати сервісному обліковому запису можливості уособлення, виконайте такі дії:

Тепер ви можете здійснювати доступ до облікового запису AdWords за допомогою сервісного облікового запису в рамках процесу затвердження OAuth2.

Налаштування клієнтської бібліотеки

Виберіть мову, щоб переглянути інструкції з налаштування бібліотеки клієнтів.

Примітка.Якщо ви вирішите не використовувати одну з наших клієнтських бібліотек, вам потрібно буде реалізувати процес самостійно.

Оптимізація запитів OAuth2

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

У цьому розділі описано, як оптимізувати керування обліковими даними OAuth2, щоб програма більш ефективно взаємодіяла з AdWords API.

Увага!Під терміном облікові данітут розуміється вся сукупність атрибутів облікових даних OAuth2, включаючи токен доступу та його термін дії.

Стратегії розподілу облікових даних

Розподіл облікових даних за запитами API підвищує швидкодію, а також дозволяє уникнути надмірного навантаження та помилок через порушення обмежень.

Стратегія розподілу облікових даних залежить від структури програми.

У багатопотокових додатках необхідно для сеансу кожного потоку використовувати ті самі облікові дані.

У багатопроцесних та розподілених додаткахнеобхідно реалізувати певну інфраструктуру передачі облікових даних між процесами. Крім того, необхідно виключити блокування потоків та виникнення стану гонки.

У додатку, який одночасно є багатопроцесним/розподіленим та багатопоточним, у кожному процесі необхідно поєднувати обидві стратегії.

Нижче наведено стратегії для автентифікації одного облікового запису AdWords, наприклад керуючого облікового запису верхнього рівня в ієрархії.

Потім описується, як адаптувати ці стратегії для .

Багатопотокові програми

У багатопоточних програмах облікові дані мають бути доступні для різних потоків. Оновлення облікових даних має виконуватися синхронно, щоб не допустити стану гонки.

На цій схемі відображаються потоки, що надсилають запити в AdWords API під час виконання. Застосовується загальний пул сеансів (користувачів). Зверніть увагу, що кожен сеанс повинен використовувати той самий об'єкт облікових даних. У відповідь на кожен запит потік API отримує відповідний сеанс (користувача). Якщо потрібно оновити токен доступу, це потрібно робити синхронно, щоб унеможливити стан гонки. Інакше кажучи, об'єкт облікових даних може бути потокобезопасным.

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

Наприклад, у клієнтській бібліотеці Java потрібно створити одноелементний клас Credential та використовувати його для всіх сеансів.

Багатопроцесні та розподілені додатки

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

Наприклад, окреме завдання або служба може здійснювати періодичне оновлення облікових даних та передавати їх у сховище даних, де вони використовуватимуться різними серверами.

На схемі показано періодичне оновлення облікових даних та запис їх властивостей у сховищі даних. Потім усі сервери одержують облікові дані, перш ніж здійснювати запит до API.

Завдання оновлення

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

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

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

Сховище даних

Сховище даних використовується для надання облікових даних різним процесамта серверам.

Для цього можна використовувати існуюче сховище даних або створити спеціалізоване, через яке сервери отримуватимуть облікові дані. В якості можливих рішеньможна використовувати сервери кешування (наприклад, Memcached або Infinispan) та сховища даних NoSQL (наприклад, MongoDB).

Основне завдання сховища даних – забезпечувати надійний інтерфейс всім серверів, звертаються до API. Його роботу необхідно оптимізувати для швидкого читання даних: сервери та процеси зчитуватимуть облікові дані частіше, ніж вони оновлюватимуться.

Пам'ятайте, що облікові дані потрібно зберігати у захищеному вигляді.

При збереженні облікових даних необхідно зберігати властивість expiry_time ( поточний час+ expires_in) і refresh_token разом із властивістю access_token . Властивість expiry_time (закінчення дії токена) розраховується за такою формулою: час запиту оновлення access_token + час expires_in (термін дії токена).

Пул серверів

Кожен сервер в пулі, перш ніж надіслати запит, отримує нові облікові дані зі сховища даних. Поки завдання оновлення працює успішно, облікові дані будуть дійсними. Однак у разі збою завдання оновлення чи сховища даних має бути резервний механізм.

Якщо сервер або процес не може отримати облікові дані зі сховища даних або якщо термін дії облікових даних закінчився, сервер повинен оновлювати свої облікові дані, щоб програма продовжувала працювати з API доти, доки проблема не буде вирішена.

У багатопотокових процесахнеобхідно використовувати таку саму стратегію розподілу облікових даних між потоками.

Аутентифікація кількох облікових записів

Облікові дані, створені для облікового запису AdWords, можна використовувати для доступу до всіх дочірніх облікових записів. Користувачам з одним керуючим акаунтом, як правило, достатньо створити облікові дані для керуючого облікового запису верхнього рівня, щоб авторизувати програму для всіх підлеглих облікових записів AdWords.

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

Ви можете дотримуватися цих стратегій для та додатків з мінімальними змінами. При використанні загального сховищаоблікові дані необхідно індексувати за ідентифікатором облікового запису customerId , щоб забезпечити зв'язок облікових даних з необхідним обліковим записом. Крім того, завдання оновлення має вчасно їх оновлювати. Після підключення нового облікового запису може знадобитися його запустити.

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

Принцип роботи OAuth2

Примітка. AdWords API поки не підтримує одночасний вхід за допомогою запиту на доступ до даних (гібридна схема) або делегування повноважень на рівні домену (2LO).

Область дії

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

Нижче наведено поточну та застарілу область дії для AdWords API.

Автономний доступ

Клієнтська програма, яка використовує AdWords API, зазвичай вимагає автономного доступу. Це може статися в тому випадку, якщо програма повинна запустити пакетні завдання, коли користувач переглядає ваш сайт без підключення до Інтернету.

Програми, що встановлюються, використовують автономний доступ за замовчуванням.

Заголовок запиту HTTP

Заголовок HTTP у кожному запиті до сервера AdWords API має включати в такій формі:

Authorization: Bearer THE_ACCESS_TOKEN

POST … HTTP/1.1 Host: … Authorization: Bearer 1/fFAGRNJru1FTz70BzhT3Zg Content-Type: text/xml;charset=UTF-8 Content-Length: …

Токени доступу та оновлення

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

Коли закінчується термін дії токена доступу

У токена доступу є термін дії, який залежить від значення expires_in. Токен доступу з терміном дії, що минув, можна оновити за допомогою токена оновлення, проте наші клієнтські бібліотеки роблять це автоматично.

Except astherwise noted, content of this page licensed under the Creative Commons Attribution 3.0 License , and code samples are licensed under the Apache 2.0 License . For details, see our . Java є registered trademark of Oracle та/або його affiliates.

Оновлено Вересень 24, 2018