❗️Аутентификация Яндекс Еды в системе Партнёра
Для авторизации pull-методов всегда используется OAuth 2.0, без refresh token. Партнёру необходимо настроить схему на своём сервере. Затем требуется передать доступы через менеджера, а именно:
- адрес сервера для отправки запросов (только домен, IP-адреса не поддерживаются);
- client_id;
- client_secret.
Яндекс Еда с полученными доступами запрашивает токен, делая POST-запрос по адресу {host}/security/oauth/token. В параметрах grant_type и scope передаются значения client_credentials и read write соответственно.
Ожидаемый заголовок ответа Content-type: application/json.
С полученным токеном Еда выполняет следующие запросы, размещая его в заголовке как Authorization: Bearer token.
Пример запроса
curl --location --request POST 'https://test.ru/security/oauth/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=abv123' \
--data-urlencode 'client_secret=456vba' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'scope=read write'
Примечание
Заголовок Content-type в запросе и ответе отличаются.
Request
POST
/security/oauth/token
Body
application/x-www-form-urlencoded
{
"client_id": "987",
"client_secret": "g8bKdBiIR9MutCObuexDm7nsgkaXU",
"grant_type": "client_credentials",
"scope": "read write"
}
|
Name |
Description |
|
client_id |
Type: string Example: |
|
client_secret |
Type: string Example: |
|
grant_type |
Type: string Example: |
|
scope |
Type: string Example: |
Responses
200 OK
Успешная аутентификация.
Body
application/json
{
"access_token": "CObuexDm7nsgkaXUg8bKdBiIR9Mut",
"expires_in": 300
}
|
Name |
Description |
|
access_token |
Type: string Example: |
|
expires_in |
Type: integer Время жизни токена в секундах. Дефолтные значения для nomenclature - 5 минут, для orders 1 час. |
400 Bad Request
Ошибка в запросе. В ответе ожидается массив с объектом из списка ошибок.
ErrorItem
|
Name |
Description |
|
code |
Type: integer Согласованный с Яндекс Едой числовой код ошибки. |
|
description |
Type: string Описание ошибки Example: |
Example
{
"code": 400,
"description": "Description of error"
}
500 Internal Server Error
Ошибка в запросе. В ответе ожидается массив с объектом из списка ошибок.
No longer supported, please use an alternative and newer version.