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