В рамках сервиса также реализован авторизационный гейт на базе протокола OAuth 2.0.
Для начала работы с OAuth необходимо зарегистрировать приложение на стороне личного кабинета сервиса "Такском-Касса" и прописать ему права на доступ к авторизации с помощью OAuth. На данный момент эта операция производится вручную, по запросу интегратора. Необходимо связаться с разработчиками компании "Такском" и сообщить о своем желании использовать OAuth для авторизации в API.
Авторизация через авторизационный гейт OAuth происходит в два этапа.
1. | Ссылка для пользователя для прохождения авторизации через OAuth: |
HTTP-запрос:
HTTP-Method: GET
Адрес запроса (URI) |
|
Параметры запроса |
|
client_id |
Публичный идентификатор внешнего приложения, полученный при регистрации |
response_type |
Тип ответа, поддерживается значение "code" |
scope |
Набор прав доступа, требуемых приложению для работы. На данный момент реализуется единственное право – "api" |
redirect_url |
Адрес, на который будет совершено перенаправление после авторизации и подтверждения прав приложения пользователем |
После перехода по ссылке абонент проходит авторизацию на сервисе и подтверждает полномочия приложения интегратора на доступ к его данным.
Финальным шагом этой операции будет редирект на адрес, указанный в первом пункте в параметре redirect_url. Одним из параметров запроса при редиректе будет:
Параметры запроса |
|
code |
Одноразовый код для получения маркера доступа к API |
2. | При обработке редиректа со стороны сервера нужно сделать запрос, по которому, имея полученный при редиректе в качестве параметра код, можно получить маркер доступа к API. |
HTTP-запрос:
HTTP-Method: POST
Адрес запроса (URI) |
|
https://<server>.taxcom.ru/core/connect/token |
|
Параметры запроса |
|
grant_type |
Тип подтверждения прав, указывается значение “authorization_code” |
code |
Код, полученный от сервера на предыдущем шаге |
redirect_uri |
Адрес, на который было совершено перенаправление после авторизации, должен совпадать с путем из пункта 1. |
Заголовок запроса |
|
Authorization:clientId:Secret |
clientId = Публичный идентификатор внешнего приложения, полученный при регистрации secret – закрытый ключ приложения, полученный при регистрации Строка clientId:Secret конвертируется в Base64 |
Ответ |
|
{"access_token":"9eca5bce0a2a21aaff4b09901b92333a","expires_in":3600000,"token_type":"Bearer"} |
Маркер, полученный в поле access_token, в дальнейшем используется в качестве маркера временного доступа при работе с API. Время жизни маркера можно оговаривать при регистрации, а также его можно продлять с помощью специального метода продления времени жизни маркера доступа.