# Авторизация стороннего web-приложения
## Открытие диалога авторизации <span id="granting-access-rights" />

Чтобы авторизовать пользователя, необходимо перенаправить его браузер на URL  [https://store.admitad.com/api/authorize/](https://store.admitad.com/api/authorize/), используя формат данных [application/x-www-form-urlencoded](http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1) и передав следующие параметры:

| Название       | Обязательный | Описание                                                                                                                                                                                                                                                |
| -------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| client\_id     | ✔            | [Идентификатор](http://tools.ietf.org/html/draft-ietf-oauth-v2-26#section-4.1.1) (id) вашего приложения\*.                                                                                                                                              |
| redirect\_uri  | ✔            | [URL](http://tools.ietf.org/html/draft-ietf-oauth-v2-26#section-4.1.1), на который будет переадресован пользователь после прохождения авторизации (домен указанного адреса должен соответствовать основному домену в настройках приложения).            |
| state          |              | [Значение](http://tools.ietf.org/html/draft-ietf-oauth-v2-26#section-4.1.1), используемое клиентом для проверки состояния между запросом и ответом сервера. Сервер возвращает это значение, когда перенаправляет агента пользователя обратно к клиенту. |
| scope          | ✔            | [Список](http://tools.ietf.org/html/draft-ietf-oauth-v2-26#section-4.1.1) разделённых пробелом [настроек доступа приложения](/article/ru/342), которые необходимо запросить.                                                                            |
| response\_type | ✔            | [Тип ответа](http://tools.ietf.org/html/draft-ietf-oauth-v2-26#section-4.1.1), ко/article/ru/342торый вы хотите получить — code.                                                                                                                        |

\* Идентификатор приложения *залогинившийся веб-мастер может получить в* [*своем аккаунте*](https://store.admitad.com/ru/webmaster/account/settings/credentials/) *(при нажатии кнопки «Показать учетные данные»).*

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

```markdown
https://store.admitad.com/api/authorize/?scope=advertiser_statistics  

advertiser_websites advertiser_info&state=7c232ff20e64432fbe071228c0779f&redirect_uri=https://store.admitad.com/&response_type=code&client_id=cb281d918a37e346b45e9aea1c6eb7
```

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

## Разрешение прав доступа <span id="granting-access-rights" />

После успешного входа на сайт пользователю будет предложено авторизовать приложение, разрешив доступ к необходимым настройкам, запрошенным при помощи параметра scope. [Полный список настроек](/article/ru/342) доступен в разделе прав доступа приложений.

## Получение параметра code <span id="get-code-parameter" />

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

```markdown
https://redirect_uri/?state=7c232ff20e64432fbe071228c0779f&code=c75ebf64ad48a352630b6d953ce365
```

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

```markdown
https://redirect_uri/?state=7c232ff20e64432fbe071228c0779f&error_description=client_id+cb281d918a37e346b45e9aea1c6eb7+doesn't+exist&error=invalid_client
```

## Получение access\_token <span id="get-access-token" />

Для получения access\_token необходимо выполнить POST-запрос на URL https://api.admitad.com/token/, используя формат данных [application/x-www-form-urlencoded](http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1) и передав следующие параметры:

| Название       | Обязательный | Описание                                                                                                                                                                                                                                        |
| -------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| client\_id     | ✔            | Идентификатор (id) вашего приложения\*.                                                                                                                                                                                                         |
| client\_secret | ✔            | Секретный ключ вашего приложения\*.                                                                                                                                                                                                             |
| code           | ✔            | [Код](http://tools.ietf.org/html/draft-ietf-oauth-v2-26#section-4.1.3), полученный на предыдущем этапе авторизации (параметр redirect\_uri).                                                                                                    |
| grant\_type    | ✔            | Тип запроса  authorization\_code                                                                                                                                                                                                                |
| redirect\_uri  | ✔            | [Ссылка](http://tools.ietf.org/html/draft-ietf-oauth-v2-26#section-4.1.3), на которую будет переадресован пользователь после прохождения авторизации (домен указанного адреса должен соответствовать основному домену в настройках приложения). |

Для запроса необходимо использовать [HTTP Basic authentification](http://en.wikipedia.org/wiki/Basic_access_authentication), используя client\_id\* и client\_secret\* как параметры доступа. Заголовок авторизации — закодированная base64 строка, содержащая конкатенированные двоеточием client\_id и client\_secret.

\* Идентификатор (client\_id) и секретный ключ (client\_secret) приложения *залогинившийся веб-мастер может получить в* [*своем аккаунте*](https://store.admitad.com/ru/webmaster/account/settings/credentials/) *(при нажатии кнопки «Показать учетные данные»).*

Пример формирования закодированного base64 заголовка авторизации в Python 2.7

для client\_id\=’cb281d918a37e346b45e9aea1c6eb7’ и client\_secret\=’a0f8a8b24de8b8182a0ddd2e89f5b1’

```plain
from base64 import b64encode  
client_id='cb281d918a37e346b45e9aea1c6eb7'  
client_secret='a0f8a8b24de8b8182a0ddd2e89f5b1'  
data = client_id + ':' + client_secret  
# data = 'cb281d918a37e346b45e9aea1c6eb7:a0f8a8b24de8b8182a0ddd2e89f5b1'  
data_b64_encoded = b64encode(data)
```

Пример base64 закодированного заголовка авторизации (переменная data\_b64\_encoded)

```markdown
Y2IyODFkOTE4YTM3ZTM0NmI0NWU5YWVhMWM2ZWI3OmEwZjhhOGIyNGRlOGI4MTgyYTBkZGQyZTg5ZjViMQ==
```

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

для client\_id\=cb281d918a37e346b45e9aea1c6eb7, где b64XXX — base64-закодированный заголовок авторизации:

```markdown
curl -H 'Authorization: Basic b64XXX' -X POST https://api.admitad.com/token/ -d  
'code=c75ebf64ad48a352630b6d953ce365&client_secret=a0f8a8b24de8b8182a0ddd2e89f5b1&grant_type=authorization_code&client_id=cb281d918a37e346b45e9aea1c6eb7&redirect_uri=https%3A%2F%2Fgoogle.com%2F'
```

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

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

code=c75ebf64ad48a352630b6d953ce365&client_secret=a0f8a8b24de8b8182a0ddd2e89f5b1&grant_type=authorization_code&client_id=cb281d918a37e346b45e9aea1c6eb7&redirect_uri=https%3A%2F%2Fgoogle.com%2F
```

В результате выполнения данного запроса вы получите новый access\_token. Вместе с access\_token возвращается время жизни ключа expires\_in в секундах, refresh\_tokenи дополнительная информация для пользователя:

```
{  
    "username": "webmaster1",  
    "first_name": "name",  
    "last_name"': "surname",  
    "language": "ru",  
    "access_token": "4b8b33955a",  
    "token_type": "bearer",  
    "expires_in": 604800,  
    "refresh_token": "ea957cce42",  
    "scope": "advcampaigns banners websites",  
    "group": "webmaster"  
}
```