Автоматическое обновление OAuth-токена
Если вы не хотите вручную обновлять OAuth-токен, как это описано в основной инструкции, воспользуйтесь API сервиса Яндекс ID.
Для этого нужно в дополнение к OAuth-токену получить еще refresh-токен. Когда срок действия OAuth-токена подойдет к концу, вы сможете обменять refresh-токен на новый OAuth-токен.
Подготовка: получение токенов
Чтобы в дальнейшем пользоваться API для обновления токенов, вам нужно получить пару токенов: OAuth-токен и refresh-токен. Это потребует немного большего количества действий, чем получение одного лишь OAuth-токена.
-
Создайте приложение, если у вас его еще нет. Инструкция
-
Откройте страницу Мои приложения и нажмите на созданное приложение для доступа к Маркету.
-
Скопируйте в файл ClientID и Client secret этого приложения.
-
Закодируйте строку
<ClientID>:<Client secret>
по Base64. -
Вставьте ClientID вот в эту ссылку:
https://oauth.yandex.ru/authorize?response_type=code&client_id=<ClientID>
Получится примерно так:
https://oauth.yandex.ru/authorize?response_type=code&client_id=5473335а275a5nb8e2648q12n8r378l7
Перейдите по получившейся ссылке.
-
Подтвердите вход.
-
Вы увидите код подтверждения. Скопируйте его. ⚠️ Этот код действует 10 минут.
-
Сделайте запрос:
POST /token HTTP/1.1 Host: https://oauth.yandex.ru/ Content-type: application/x-www-form-urlencoded Authorization: Basic <encoded string `client_id:client_secret`> grant_type=authorization_code & code=<confirmation_code>
Например, с помощью cURL:
curl -X POST https://oauth.yandex.ru/token -H "Authorization: Basic <encoded string client_id:client_secret>" -d "grant_type=authorization_code&code=<confirmation_code>" -H "Content-type: application/x-www-form-urlencoded"
-
Вам придет ответ, содержащий OAuth-токен в поле
access_token
и refresh-токен в полеrefresh_token
:
{
"access_token": <OAuth_token>,
"expires_in": 31536000,
"refresh_token": <refresh_token>,
"token_type": "bearer"
}
OAuth-токен используйте так, как описано в инструкции по авторизации. Refresh-токен вам понадобится, чтобы получить новый OAuth-токен, когда его срок действия подойдет к концу.
Как обновлять токены
Срок действия OAuth-токена — год. Чтобы интеграция работала без перебоев, его нужно обновлять до истечения этого срока.
Чтобы получить новые токены, снова воспользуйтесь запросом POST /token:
POST /token HTTP/1.1
Host: https://oauth.yandex.ru/
Content-type: application/x-www-form-urlencoded
Authorization: Basic <encoded_string `client_id:client_secret`>
grant_type=refresh_token
&
refresh_token=<refresh_token>
Старый токен перестанет действовать немедленно
Замените токен в заголовках запросов сразу же после обновления.
Новый refresh-токен понадобится вам для следующего обновления OAuth-токена.
Может быть полезно
Справка сервиса Яндекс ID: