Перейти к содержимому

OAuth 2.0 и PKCE

Поток authorization code + PKCE для приложений, которым нужно действовать от имени пользователя.

1 мин чтения Разделов: 2

Beklio Auth поддерживает поток authorization code для зарегистрированных OAuth-клиентов. Для публичных клиентов (мобильные приложения, SPA) PKCE обязателен, принимается только метод S256.

Порядок действий#

  1. Сгенерируйте случайный code_verifier и вычислите code_challenge = BASE64URL(SHA256(code_verifier)).
  2. Перенаправьте пользователя на https://accounts.beklio.com/oauth/authorize с параметрами response_type=code, client_id, redirect_uri, scope, state, code_challenge и code_challenge_method=S256.
  3. После согласия пользователя он возвращается на ваш redirect_uri с code и state. Обязательно проверяйте значение state.
  4. Обменяйте код на токены.
token-exchange.sh
curl -X POST "https://api.beklio.com/oauth/token" \
  -H "Content-Type: application/json" \
  -d '{
    "grant_type": "authorization_code",
    "client_id": "YOUR_CLIENT_ID",
    "code": "AUTHORIZATION_CODE",
    "redirect_uri": "https://app.example.com/callback",
    "code_verifier": "YOUR_CODE_VERIFIER"
  }'

Ответ содержит access_token, token_type: "Bearer", expires_in и, если клиенту это разрешено, refresh_token.

Правила#

  • redirect_uri должен в точности совпадать с одним из адресов, зарегистрированных для клиента.
  • Authorization code одноразовый и недолговечный; повторный обмен с тем же кодом отклоняется.
  • Для обновления используйте grant_type: "refresh_token".

Чего-то не хватает или есть ошибка? Напишите в поддержку; приложив значение X-Request-Id из ответа, вы ускорите решение.