Авторизация через OAuth2
Рекомендуется для связи Браузер → Сервер
Пройдите первоначальную настройку проекта
Убедитесь, что выполнили все инструкции из раздела по добавлению проекта и приложения
Добавьте OAuth клиента
Перейдите в карточку проекта, зайдите на страницу "Клиенты OAuth" и добавьте нового oauth клиента.
Как и в любых других oauth системах авторизации вы должны будете заполнить "Разрешенные URI перенаправления".
После успешного добавления вы получаете идентификатор и секрет клиента, с ними вы можете проходить процедура oauth авторизации.
Получение токена
Получение токена в обмен на код, извлеченный из URL:
- Приложение направляет пользователя на страницу Garpun OAuth, где он может разрешить доступ к своим данным.
- Пользователь разрешает доступ приложению.
- Garpun OAuth перенаправляет пользователя на адрес, указанный в поле Callback URL при регистрации приложения. Код подтверждения (или описание ошибки) передается в параметре URL перенаправления.
- Приложение получает адрес перенаправления и извлекает код подтверждения.
- Приложение отправляет POST-запрос с кодом.
- Garpun OAuth возвращает токен или ошибку в теле ответа.
Запрос кода подтверждения
https://account.garpun.com/oauth2/authorize?response_type=code
& client_id=<идентификатор приложения>
& redirect_uri=<адрес перенаправления>
& state=<произвольная строка>
& scope=<запрашиваемые необходимые права>
Получение кода подтверждения из URL
Когда пользователь разрешает доступ к своим данным Garpun OAuth перенаправляет пользователя на указанный вами redirect_uri с добавлением GET параметра code
Обмен кода подтверждения на токен
Приложение отправляет код, а также свой идентификатор и пароль в POST-запросе.
POST /oauth2/token HTTP/1.1
Host: account.garpun.com
Content-type: application/x-www-form-urlencoded
Content-Length: <длина тела запроса>
grant_type=authorization_code
& code=<код подтверждения>
& client_id=<идентификатор приложения>
& client_secret=<пароль приложения>
Формат ответа с токеном
{
"scopes": [
"userinfo.profile"
],
"token_type": "bearer",
"expires_in": 300,
"access_token": "XXXXX",
"refresh_token": "XXXXX",
"user_id": 10191,
"company_id": 1
}
- scopes: Области доступа, доступные этому токену
- token_type: Тип выданного токена. Всегда принимает значение «bearer»
- expires: Время жизни токена в секундах
- access_token: OAuth-токен с запрошенными правами
- refresh_token: Токен, который можно использовать только для продления срока жизни соответствующего OAuth-токена
Время жизни refresh-токена совпадает с временем жизни OAuth-токена.
Если выдать токен не удалось, то ответ содержит описание ошибки:
{
"token_type": "bearer",
"error": "<код ошибки>",
"error_description": "<описание ошибки>"
}
Обновить токен
Получение токена в обмен на refresh-токен:
- Приложение отправляет POST-запрос с refresh-токеном.
- Garpun OAuth возвращает новый access_token в теле ответа.
POST /oauth2/token HTTP/1.1
Host: account.garpun.com
Content-type: application/x-www-form-urlencoded
Content-Length: <длина тела запроса>
grant_type=refresh_token
& refresh_token=<refresh_token>
& client_id=<идентификатор приложения>
& client_secret=<пароль приложения>
В теле ответа вы получите такую же структуру, как и в случае получения токена по authorization_code