Авторизация стороннего web-приложения

Открытие диалога авторизации

Для того, чтобы авторизовать пользователя, необходимо перенаправить его браузер на URL https://api.admitad.com/authorize/, используя формат данных application/x-www-form-urlencoded и передав следующие параметры:

Название Обязательный Описание
client_id ID Вашего приложения
redirect_uri Адрес, на который будет переадресован пользователь после прохождения авторизации (домен указанного адреса должен соответствовать основному домену в настройках приложения).
state   Значение, используемое клиентом для проверки состояния между запросом и ответом сервера. Сервер возвращает это значение, когда перенаправляет агента пользователя обратно к клиенту
scope Список разделённых пробелом настроек доступа приложения, которые необходимо запросить
response_type
Тип ответа, который Вы хотите получить
  • code

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

https://api.admitad.com/authorize/?scope=public_data&state=7c232ff20e64432fbe071228c0779f7a&redirect_uri=http://some-site.com/&response_type=code&client_id=926840fa8a2c1befc4902e4193c181

Если пользователь не вошел на сайт, то в диалоговом окне ему будет предложено ввести свой логин и пароль.

Разрешение прав доступа

После успешного входа на сайт пользователю будет предложено авторизовать приложение, разрешив доступ к необходимым настройкам, запрошенным при помощи параметра scope. Полный список настроек доступен в разделе прав доступа приложений.

Получение параметра code

После успешной авторизации приложения браузер пользователя будет перенаправлен по адресу redirect_uri, указанному при открытии диалога авторизации. При этом код для получения ключа доступа code будет передан в GET-параметре на указанный адрес:

https://redirect_uri/?state=daf4810de8c54f689fbf79183717428e&code=c75ebf64ad48a352630b6d953ce365

В случае возникновения ошибки, браузер пользователя будет перенаправлен с кодом и описанием ошибки:

http://redirect_uri/?state=be76389f0840472d8fb20a2c535ff6c4&error_description=client_id+926840fa8a2c1befc4902e4193c18112+doesn't+exist&error=invalid_client

Получение access_token

Для получения access_token необходимо выполнить POST запрос на URL https://api.admitad.com/token/, используя формат данных application/x-www-form-urlencoded и передав следующие параметры:

Название Обязательный Описание
client_id ID Вашего приложения
client_secret Секретный ключ Вашего приложения
code Код, полученный на предыдущем этапе авторизации
grant_type
Тип запроса
  • authorization_code
redirect_uri Адрес, на который будет переадресован пользователь после прохождения авторизации (домен указанного адреса должен соответствовать основному домену в настройках приложения)

Для запроса необходимо использовать HTTP Basic аутентификацию, используя client_id и client_secret как параметры доступа. В примере ниже в заголовке авторизации XXX - закодированная в base64 кодировке строка, содержащая склеенные двоеточием client_id и client_secret.

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

curl -H 'Authorization: Basic XXX' -X POST https://api.admitad.com/token/ -d 'code=ddb1133275ea29806be2e38da6a414&client_secret=XXX&grant_type=authorization_code&client_id=XXX&redirect_uri=http%3A%2F%2Fgoogle.com%2F'

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

POST /token/ HTTP/1.1
Host: api.admitad.com
Content-Type: application/x-www-form-urlencoded;charset=UTF-8

code=ddb1133275ea29806be2e38da6a414&client_secret=XXX&grant_type=authorization_code&client_id=XXX&redirect_uri=http%3A%2F%2Fgoogle.com%2F

В результате выполнения данного запроса Вы получите новый access_token. Вместе с access_token возвращается время жизни ключа expires_in в секундах, refresh_token и дополнительная информация для пользователя:

{
    "username": "webmaster1",
    "first_name": "first_name",
    "last_name"': "last_name",
    "language": "ru",
    "access_token": "4b8b33955a",
    "token_type": "bearer",
    "expires_in": 604800,
    "refresh_token": "ea957cce42",
    "scope": "public_data"
}