Флида
API

Авторизация

Перенаправление пользователя в Флида ID и получение кода авторизации с PKCE.

Шаг 1. Подготовьте PKCE

Перед каждым запросом на авторизацию создайте code_verifier: криптографически случайную строку длиной от 32 симовол из букв латинского алфавита, цифр и символов -._~.

Вычислите code_challenge:

code_challenge = BASE64URL(SHA256(ASCII(code_verifier)))

В Base64 URL Encoding не должно быть символов заполнения =.

Пример:

code_verifier:  dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
code_challenge: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM

Шаг 2. Сформируйте запрос на авторизацию

Перенаправьте пользователя на форму авторизации Флида ID:

GET https://id.flida.ru/oauth2/authorize

Параметры строки запроса

ПараметрОписание
client_idОбязательный. Идентификатор проекта из консоли Флида ID.

Пример: 019d9a8a-7f8b-7f54-9d4e-4a9ecc9fc609
redirect_uriОбязательный. Адрес возврата пользователя. Он должен совпадать с одним из адресов в разделе Платформы | Web в настройках проекта.

Пример: https://myapp.ru/callback
stateОбязательный. Криптографически случайная строка длиной до 255 символов для защиты от CSRF. Флида ID вернет значение без изменений.

Пример: CNTMQS56FJLNBRKWIC5KGMRH2R
response_typeОбязательный. Всегда передавайте code.
code_challengeОбязательный. SHA-256-хеш code_verifier, закодированный в Base64 URL Encoding без =.
code_challenge_methodОбязательный. Всегда передавайте S256.
scopeНеобязательный. Значения scope, разделенные пробелами. openid и offline_access можно не передавать: ID- и refresh-токены выдаются всегда.

Пример URL

Значения параметров должны быть URL-кодированы:

GET https://id.flida.ru/oauth2/authorize?client_id=019d9a8a-7f8b-7f54-9d4e-4a9ecc9fc609&redirect_uri=https%3A%2F%2Fmyapp.ru%2Fcallback&state=CNTMQS56FJLNBRKWIC5KGMRH2R&response_type=code&code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM&code_challenge_method=S256&scope=name%20email

Доступные значения scope

Запрашивать можно только значения scope, предварительно разрешенные в настройках проекта.

ScopeДанные
nameИмя, фамилия и, если указано, отчество.
nicknameОтображаемое имя. Может быть сгенерировано на основе ФИО.
date_of_birthДата рождения в формате YYYY-MM-DD.
sexПол: female или male.
phoneНомер телефона и признак его подтверждения.
emailАдрес электронной почты и признак его подтверждения.

Шаг 3. Обработайте ответ

Успешная авторизация

Флида ID вернет 302 Found с параметрами code и state:

HTTP/1.1 302 Found
Location: https://myapp.ru/callback?code=gTqEcwBiRN3VE2ttxc...&state=CNTMQS56...
  • code — обменяйте его на токены сразу после получения.
  • state — значение из исходного запроса.

Сравните полученный state с сохраненным исходным значением. Если они отличаются, прервите процесс.

Далее выполните сценарий получения токенов.

Ошибки авторизации

Если client_id и redirect_uri прошли проверку, Флида ID перенаправит пользователя на redirect_uri с параметрами error, error_description и исходным state, если его удалось корректно обработать:

HTTP/1.1 302 Found
Location: https://myapp.ru/callback?error=access_denied&error_description=consent%20is%20not%20granted&state=CNTMQS56...
ОшибкаЧто означаетЧто делать проекту
access_deniedПользователь не предоставил проекту доступ к запрошенным данным.Завершить сценарий и сообщить пользователю, что доступ не предоставлен.
invalid_requestОтсутствует обязательный параметр или его значение некорректно.Проверить state, PKCE и остальные параметры запроса.
invalid_scopeЗапрошено неизвестное или не разрешенное проекту значение scope.Запрашивать только значения из настроек проекта.
login_requiredУ пользователя нет активной сессии Флида ID.Начать вход пользователя и повторить авторизацию.
unsupported_response_typeЗначение response_type отличается от code.Передать response_type=code.
server_errorФлида ID не смог обработать запрос из-за внутренней ошибки.Предложить пользователю повторить попытку позже.

Если невозможно безопасно определить адрес перенаправления, например из-за неизвестного client_id или неверного redirect_uri, сервер вернет JSON без перенаправления:

{
  "error": "invalid_request",
  "error_description": "invalid client_id"
}

В этом случае возможны статусы 400 Bad Request и 500 Internal Server Error.

© 2026 ООО «Флида»

На этой странице