Запрос авторизации

Приложение отправляет запрос Authorization Request на сервер Яндекс.Денег, используя браузер операционной системы.

Совет. Для отправки запроса рекомендуется использовать метод POST — эквивалент HTML form submit и кодировку UTF-8.

Формат запроса:

POST /oauth/authorize HTTP/1.1
Host: money.yandex.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: <content-length>

client_id=<client_id>&response_type=code
&redirect_uri=<redirect_uri>&scope=<scope>&instance_name=<instance_name>

Пример параметров запроса:

client_id=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01
response_type=code
redirect_uri=https://client.example.com/cb
scope=account-info operation-history

Пример запроса:

POST /oauth/authorize HTTP/1.1
Host: money.yandex.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 191

client_id=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01&response_type=code&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb&scope=account%2Dinfo%20operation%2Dhistory

Параметры запроса:

Параметр Тип Описание
client_id string Идентификатор приложения, полученный при регистрации.
response_type string Фиксированное значение: code.
redirect_uri string

URI, на который сервер OAuth передает результат авторизации.

Значение этого параметра при посимвольном сравнении должно быть идентично значению redirect_uri, указанному при регистрации приложения. При сравнении не учитываются индивидуальные параметры приложения, которые могут быть добавлены в конец строки URI.

scope string Список запрашиваемых прав. Разделитель элементов списка - пробел. Элементы списка чувствительны к регистру.
instance_name string Идентификатор экземпляра авторизации в приложении. Необязательный параметр. Позволяет получить несколько авторизаций для одного приложения.
Внимание. Запрещается отправлять запрос (открывать страницу) непосредственно из приложения, поскольку по правилам платежного сервиса логин, пароль и платежный пароль пользователя допускается вводить только на страницах сервиса Яндекс.Деньги.

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

Результат авторизации возвращается как HTTP 302 Redirect. Приложение должно обработать ответ HTTP Redirect.

Внимание.

Одно приложение может получить только одну авторизацию для одного пользователя. Повторная авторизация (с тем же значением параметра client_id) аннулирует выданные ранее разрешения.

Существует возможность получить несколько авторизаций для одного пользователя: для этого необходимо указать параметр instance_name. Повторная авторизация в этом случае учитывает оба параметра - client_id и instance_name.

В качестве instance_name рекомендуется использовать уникальный идентификатор пользователя в приложении, например его логин.

Параметры перенаправления с результатом авторизации:

Параметр Тип Описание
code string Временный токен (authorization code), подлежащий обмену на постоянный токен авторизации. Присутствует если пользователь подтвердил авторизацию приложения.
error string Код ошибки. Присутствует в случае ошибки или отказа в авторизации пользователем.
error_description string Дополнительное текстовое пояснение ошибки.

Возможные ошибки:

Значение поля error Описание Поведение сервиса
invalid_request В запросе отсутствуют обязательные параметры, либо параметры имеют некорректные или недопустимые значения. Страница с текстом ошибки.
invalid_scope Параметр scope отсутствует, либо имеет некорректное значение или имеет логические противоречия. Страница с текстом ошибки.
unauthorized_client Неверное значение параметра client_id, либо приложение не имеет право запрашивать авторизацию (например его client_id заблокирован Яндекс.Деньгами). Страница с текстом ошибки.
access_denied Пользователь отклонил запрос авторизации приложения. Перенаправление в приложение с кодом ошибки.

Пример ответа Яндекс.Денег при успешной авторизации:

HTTP/1.1 302 Found
Location: https://client.example.com/cb?code=i1WsRn1uB1ehfbb37

Ответ Яндекс.Денег при отказе в авторизации:

HTTP/1.1 302 Found
Location: https://client.example.com/cb?error=access_denied
Важно.

Временный токен (значение поля code ответа) подлежит немедленному обмену на токен авторизации. Время действия этого токена — меньше 1 минуты.

Приложение должно получить и обработать ответ сервера Яндекс.Денег и немедленно самостоятельно обменять временный токен на токен авторизации.

Если приложению не удалось получить ответ сервера, временный токен утерян, либо срок его действия истек, необходимо повторить процедуру авторизации.