Авторизация через 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