Получение токена
Если авторизация завершилась успехом, приложение должно немедленно обменять временный токен на токен авторизации. Для этого необходимо отправить запрос, содержащий временный токен, на OAuth-сервер Яндекс.Денег.
 
Запрос
Запрос должен быть отправлен методом POST.
Формат запроса
POST /oauth/token HTTP/1.1
Host: money.yandex.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: <content-length>

code=<code>&client_id=<client_id>&grant_type=authorization_code&redirect_uri=<redirect_uri>
Параметры запроса
ПараметрТипОписание
codestringВременный токен (
authorization code
).
client_idstringИдентификатор приложения, полученный при регистрации.
grant_typestringФиксированное значение:
authorization_code
.
redirect_uristringURI, на который OAuth-сервер передает результат авторизации. Значение этого параметра при посимвольном сравнении должно быть идентично значению
redirect_uri
, ранее переданному в запросе
authorize
.
client_secretstringСекретное слово для проверки подлинности приложения. Указывается, если сервис зарегистрирован с проверкой подлинности.
Пример запроса без проверки подлинности
POST /oauth/token HTTP/1.1
Host: money.yandex.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 421

code=0DF3343A8D9C7B005B1952D9B933DC56ACB7FED6D3F2590A6FD90EC6391050EDFFCC993D325B41B00F58E5383F37F6831E8F415696E1CF07676EE8D0A3655CDD7C667189DFB69BFDB7116C0329303AB2554290048BAF9B767B4C335BF0E85830AC017AD2F14D97F529893C202D3B2C27A61EE53DC4FB04DAE8E815DE2E3F865F&client_id=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01&grant_type=authorization_code&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb
Пример запроса с проверкой подлинности по секретному слову
POST /oauth/token HTTP/1.1
Host: money.yandex.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 580

code=0DF3343A8D9C7B005B1952D9B933DC56ACB7FED6D3F2590A6FD90EC6391050EDFFCC993D325B41B00F58E5383F37F6831E8F415696E1CF07676EE8D0A3655CDD7C667189DFB69BFDB7116C0329303AB2554290048BAF9B767B4C335BF0E85830AC017AD2F14D97F529893C202D3B2C27A61EE53DC4FB04DAE8E815DE2E3F865F&client_id=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01&grant_type=authorization_code&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb&client_secret=NH2FGEYIS57DXVO4CJ4APTQVWWH78JZ140EIMJ5YOLTG0TQV0OIM9WBN1DGRZ3LP9AJK8ROAGMZFELPNK863HPRCF14CLWQXX66DSBHT3Z1X9WDC2I7MNKEWFY9285ARSW57QSWKBYB0263V
 
Ответ
В ответ на запрос сервер Яндекс.Денег возвращает токен авторизации (
access_token
), который является симметричным секретом приложения и дает право проводить операции со счетом пользователя.
Токен возвращается в виде JSON-документа, который (в зависимости от результата обмена) может содержать одно из следующих полей:
ПараметрТипОписание
access_tokenstringТокен авторизации. Присутствует в случае успеха.
errorstringКод ошибки. Присутствует в случае ошибки.
Возможные ошибки (значение поля error)
Код ошибкиОписание
invalid_requestОбязательные параметры запроса отсутствуют или имеют некорректные или недопустимые значения.
unauthorized_clientНеверное значение параметра
client_id
или
client_secret
, либо приложение не имеет права запрашивать авторизацию (например, его
client_id
заблокирован Яндекс.Деньгами).
invalid_grantВ выдаче
access_token
отказано. Временный токен не выдавался Яндекс.Деньгами, либо просрочен, либо по этому временному токену уже выдан
access_token
(повторный запрос токена авторизации с тем же временным токеном).
Пример ответа при успешном обмене временного токена
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 293
Cache-Control: no-store

{
  "access_token":"410012345678901.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123"
}
Пример ответа при ошибке
HTTP/1.1 400 Bad Request
Content-Type: application/json
Content-Length: 25
Cache-Control: no-store

{
  "error":"invalid_grant"
}
Использовать временный токен можно только один раз. Если приложению не удалось получить ответ сервера за время жизни временного токена, процедуру авторизации следует повторить сначала.
Полученный
access_token
является симметричным секретом авторизации, поэтому разработчик приложения должен предпринять меры по его защите: хранить токен в зашифрованном виде, предоставлять доступ к нему только после авторизации пользователя в приложении. Например, токен авторизации может быть зашифрован с помощью алгоритма 3DES, где ключ шифрования — четырехзначный пин-код.
Токены, полученные до 7 февраля 2018 года, действуют 6 месяцев. Токены, полученные позже, действуют 3 года.
 
Что почитать еще
Запрос авторизацииОтзыв токенаАвторизация приложенияРегистрация приложения