Автоматическое обновление OAuth-токена

Если вы не хотите вручную обновлять OAuth-токен, как это описано в основной инструкции, воспользуйтесь API сервиса Яндекс ID.

Для этого нужно в дополнение к OAuth-токену получить еще refresh-токен. Когда срок действия OAuth-токена подойдет к концу, вы сможете обменять refresh-токен на новый OAuth-токен.

Подготовка: получение токенов

Чтобы в дальнейшем пользоваться API для обновления токенов, вам нужно получить пару токенов: OAuth-токен и refresh-токен. Это потребует немного большего количества действий, чем получение одного лишь OAuth-токена.

  1. Создайте приложение, если у вас его еще нет. Инструкция

  2. Откройте страницу Мои приложения и нажмите на созданное приложение для доступа к Маркету.

  3. Скопируйте в файл ClientID и Client secret этого приложения.

  4. Закодируйте строку <ClientID>:<Client secret> по Base64.

  5. Вставьте ClientID вот в эту ссылку:

    https://oauth.yandex.ru/authorize?response_type=code&client_id=<ClientID>
    

    Получится примерно так:

    https://oauth.yandex.ru/authorize?response_type=code&client_id=5473335а275a5nb8e2648q12n8r378l7
    

    Перейдите по получившейся ссылке.

  6. Подтвердите вход.

  7. Вы увидите код подтверждения. Скопируйте его. ⚠️ Этот код действует 10 минут.

  8. Сделайте запрос:

    POST /token HTTP/1.1
    Host: https://oauth.yandex.ru/
    Content-type: application/x-www-form-urlencoded
    Authorization: Basic <закодированная строка `client_id:client_secret`>
    
    grant_type=authorization_code
    &
    code=<код подтверждения>
    

    Например, с помощью cURL:

    curl -X POST https://oauth.yandex.ru/token -H "Authorization: Basic <закодированная строка client_id:client_secret>" -d "grant_type=authorization_code&code=<код подтверждения>" -H "Content-type: application/x-www-form-urlencoded"
    
  9. Вам придет ответ, содержащий OAuth-токен в поле access_token и refresh-токен в поле refresh_token:

{
   "access_token": <OAuth-токен>,
   "expires_in": 31536000,
   "refresh_token": <refresh-токен>,
   "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 <закодированная строка `client_id:client_secret`>

grant_type=refresh_token
&
refresh_token=<refresh_token>

Старый токен перестанет действовать немедленно

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

Новый refresh-токен понадобится вам для следующего обновления OAuth-токена.

Может быть полезно

Справка сервиса Яндекс ID: