Запрос авторизации
Приложение отправляет запрос Authorization Request на сервер ЮMoney, используя браузер операционной системы.
Формат запроса
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. Пользователь вводит свой логин и пароль, просматривает список запрашиваемых прав и лимиты на платежи, подтверждает либо отклоняет запрос авторизации приложения.
Результат авторизации возвращается как HTTP 302 Redirect. Приложение должно обработать ответ HTTP Redirect.
Существует возможность получить несколько авторизаций для одного пользователя: для этого необходимо указать параметр
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 и немедленно самостоятельно обменять временный токен на токен авторизации.
Если приложению не удалось получить ответ сервера, временный токен утерян, либо срок его действия истек, необходимо повторить процедуру авторизации.
Что почитать еще