Запрос авторизации
Приложение отправляет запрос Authorization Request на сервер ЮMoney, используя браузер операционной системы.
Для отправки запроса рекомендуется использовать метод POST — эквивалент HTML form submit и кодировку UTF‑8.
Запрос
Формат запроса
POST /oauth/authorize HTTP/1.1 Host: yoomoney.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 | string | Идентификатор приложения, полученный при регистрации. |
response_type | string | Фиксированное значение: code . |
redirect_uri | string | URI, на который сервер OAuth передает результат авторизации. Значение этого параметра при посимвольном сравнении должно быть идентично значению redirect_uri , указанному при регистрации приложения. При сравнении не учитываются индивидуальные параметры приложения, которые могут быть добавлены в конец строки URI. |
scope | string | Список запрашиваемых прав. Разделитель элементов списка — пробел. Элементы списка чувствительны к регистру. |
instance_name | string | Идентификатор экземпляра авторизации в приложении. Необязательный параметр. Позволяет получить несколько авторизаций для одного приложения. |
Пример параметров запроса
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: yoomoney.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
Запрещается отправлять запрос (открывать страницу) непосредственно из приложения, поскольку по правилам платежного сервиса логин, пароль и платежный пароль пользователя допускается вводить только на страницах сервиса ЮMoney.
По запросу авторизации пользователь перенаправляется на страницы авторизации ЮMoney. Пользователь вводит свой логин и пароль, просматривает список запрашиваемых прав и лимиты на платежи, подтверждает либо отклоняет запрос авторизации приложения.
Ответ
Результат авторизации возвращается как 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 , либо приложение не имеет право запрашивать авторизацию (например ЮMoney заблокировали его client_id ). | Страница с текстом ошибки. |
access_denied | Пользователь отклонил запрос авторизации приложения. | Перенаправление в приложение с кодом ошибки. |
Пример ответа ЮMoney при успешной авторизации
HTTP/1.1 302 Found Location: https://client.example.com/cb?code=i1WsRn1uB1ehfbb37
Ответ ЮMoney при отказе в авторизации
HTTP/1.1 302 Found Location: https://client.example.com/cb?error=access_denied
Временный токен (значение поля
code
ответа) подлежит немедленному обмену на токен авторизации. Время действия этого токена — меньше 1 минуты.Приложение должно получить и обработать ответ сервера ЮMoney и немедленно самостоятельно обменять временный токен на токен авторизации.
Если приложению не удалось получить ответ сервера, временный токен утерян, либо срок его действия истек, необходимо повторить процедуру авторизации.
Что почитать еще