Флида
API

Получение и обновление токенов

Способы аутентификации приложения

Мы поддерживаем два стандарта аутентификации клиента:

  1. client_secret_basic Рекомендуемый. Мы используем стандартный механизм HTTP Basic Authentication. Учетные данные client_id и client_secret передаются в HTTP-заголовке Authorization. Предварительно их необходимо объединить через двоеточие (client_id:client_secret) и закодировать в Base64.
    Итоговый заголовок будет выглядеть так: Authorization: Basic bXlfaWQ6bXlfc2VjcmV0.

  2. client_secret_post. Учетные данные client_id и client_secret передаются напрямую в теле запроса.

Использовать одновременно два способа аунтентификации НЕЛЬЗЯ.

1. Получение токенов (Authorization Code)

Используйте этот запрос для первичного получения токенов после того, как пользователь авторизовался.

URL для обмена кода на токены и обновление токенов: POST https://api.flida.ru/oidc/token

Content-Type: application/x-www-form-urlencoded

Параметры тела запроса

ПараметрОписание
grant_typeОбязательный параметр

Тип авторизации. Для данного запроса всегда передавайте значение authorization_code.

Пример: authorization_code
codeОбязательный параметр

Код авторизации, который вы получили при успешном редиректе после прохождения Authorization Flow.

Пример: gTqEcwBiRN3VE2ttxc...
code_verifierОбязательный параметр

Та же самая случайная строка, которую вы сгенерировали в приложении на 1 шаге до применения функции хеширования.

Пример: my_random_verifier_string
redirect_uriОбязательный параметр

Тот же самый redirect_uri, который вы передавали на первом шаге в Authorization Flow. Должен совпадать строго.

Пример: https://myapp.ru/callback
client_idОбязательный параметр*

Идентификатор вашего приложения. Обязателен, если вы используете метод аутентификации client_secret_post. Если используете client_secret_basic, то передавать в теле не надо.
client_secretОбязательный параметр*

Секретный ключ вашего приложения. Обязателен, если вы используете метод аутентификации client_secret_post. Если используете client_secret_basic, передавать в теле не надо.

Пример запроса client_secret_basic

POST /oidc/token HTTP/1.1
Host: api.flida.ru
Content-Type: application/x-www-form-urlencoded
Authorization: Basic MDE5ZDlhOGEtN2Y4Yi03ZjU0LTlkNGUtNGE5ZWNjOWZjNjA5Om15X3N1cGVyX3NlY3JldA==

grant_type=authorization_code&code=gTqEcwBiRN3VE...&code_verifier=my_random_verifier_string&redirect_uri=https://myapp.com/callback

Пример запроса client_secret_post

POST /oidc/token HTTP/1.1
Host: api.flida.ru
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&code=gTqEcwBiRN3VE...&code_verifier=my_random_verifier_string&redirect_uri=https://myapp.com/callback&client_id=019d9a8a-7f8b-7f54-9d4e-4a9ecc9fc609&client_secret=my_super_secret

Успешный обмен кода на токены

При успешном запросе сервер вернет статус 200 OK и JSON-объект:

{
  "access_token": "eyJhbG...",
  "expires_in": 3600,
  "id_token": "eyJhbG...",
  "refresh_token": "dGVzdF9yZWZyZXNo...",
  "token_type": "Bearer"
}
ПараметрТипОписание
access_tokenstringЭтот токен вам понадобится для получения информации о пользователе. Подробнее см. в разделе Информация о пользователе.
expires_inintВремя жизни access_token в секундах.
id_tokenstringJWT-токен, содержащий в себе идентификационные данные пользователя и мета информацию.
refresh_tokenstringТокен для обновления access_token.
token_typestringТип токена. Всегда возвращается значение Bearer.

ID Token

id_token — это JWT-токен. В нем лежат scope, которые вы запрашивали на этапе Авторизации, а также определенная мета-информация о самом токене. Это полезно для первичной идентификации пользователя и получения его профиля без необходимости делать отдельный запрос к API. Однако, если вам нужно обновить информацию о пользователе, используйте access_token. Подробнее см. в разделе Информация о пользователе.

Payload: Наполнение зависит от тех scope, что вы запросили ранее. В максимальной комплектации представлены следующие ключи:

{
  "iss": "https://api.flida.ru",
  "sub": "v1.ffd02a9186905c46c21a2f671ec665470c9533660658bcf4e610369a57155658",
  "aud": "019d9a8a-7f8b-7f54-9d4e-4a9ecc9fc609",
  "exp": 1714000000,
  "iat": 1713996400,
  "date_of_birth": "2001-01-02",
  "email": "test@test.ru",
  "email_verified": true,
  "given_name": "Александр",
  "family_name": "Пушкин",
  "middle_name": "Сергеевич",
  "nickname": "Пушкин А. С.",
  "phone_number": "+79107777777",
  "phone_number_verified": true,
  "sex": "male"
}
КлючОписание
issВсегда равен базовому URL нашего OIDC-сервера.

Пример: https://api.flida.ru
subPairwise идентификатор. Уникален для связки определенного пользователя и конкретного приложения-клиента.

Пример: v1.ffd02a9186905c...
audЗначение должно совпадает с вашим client_id.

Пример: 019d9a8a-7f8b-7f54-9d4e-4a9ecc9fc609
exp, iatВремя истечения (exp) и выпуска (iat) токена в формате Unix timestamp.
given_namescope name

Имя.

Пример: Александр
family_namescope name

Фамилия.

Пример: Пушкин
middle_namescope name

Отчество.

Пример: Сергеевич
nicknamescope nickname

Псевдоним. Генерируется на основе ФИО, если не указан явно.

Пример: Пушкин А. С.
date_of_birthscope date_of_birth

Дата рождения в формате YYYY-MM-DD.

Пример: 2001-01-02
sexscope sex

Пол. Доступные значения: female (женский) или male (мужской).

Пример: female
phone_numberscope phone

Номер телефона.

Пример: +79107777777
phone_number_verifiedscope phone

Флаг (bool), указывающий, подтвержден ли телефон в системе.

Пример: true
emailscope email

Адрес электронной почты.

Пример: test@test.ru
email_verifiedscope email

Флаг (bool), указывающий, подтверждена ли почта в системе.

Пример: true
Обязательно сверяйте поле aud из ID токена с вашим client_id. Если значения не совпадают, токен должен быть отклонен. А также сверяйте поле iss с актуальным iss нашего сервера и проверяйте подпись ID токена публичным ключом. Узнать актуальный iss и получить публичный ключ можно сделав запрос на /.well-known/openid-configuration endpoint. Подробнее об этом см. в разделе .well-known endpoints.

2. Обновление токенов (Refresh Token)

access_token имеет ограниченный срок жизни (1 час). Вы можете получить новый токен, сделав запрос на тот же эндпоинт, воспользовавшись refresh_token.

URL для обмена кода на токены и обновление токенов: POST https://api.flida.ru/oidc/token

Аутентификация: Те же требования (через Basic или в теле POST-запроса).

Параметры тела запроса

ПараметрОписание
grant_typeОбязательный параметр

Передайте значение refresh_token.
refresh_tokenОбязательный параметр

Значение refresh_token, который вы получили в предыдущем ответе при первичном обмене кода на токены.

Пример: dGVzdF9yZWZyZXNo...
client_idОбязательный параметр*

Идентификатор вашего приложения. Обязателен, если вы используете метод аутентификации client_secret_post. Если используете client_secret_basic, передавать в теле не надо.
client_secretОбязательный параметр*

Секретный ключ вашего приложения. Обязателен, если вы используете метод аутентификации client_secret_post. Если используете client_secret_basic, передавать в теле не надо.

Пример запроса client_secret_basic

POST /oidc/token HTTP/1.1
Host: api.flida.ru
Content-Type: application/x-www-form-urlencoded
Authorization: Basic MDE5ZDlhOGEtN2Y4Yi03ZjU0LTlkNGUtNGE5ZWNjOWZjNjA5Om15X3N1cGVyX3NlY3JldA==

grant_type=refresh_token&refresh_token=dGVzdF9yZWZyZXNo...

Пример запроса client_secret_post

POST /oidc/token HTTP/1.1
Host: api.flida.ru
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token&refresh_token=dGVzdF9yZWZyZXNo...&client_id=019d9a8a-7f8...&client_secret=my_super_secret

Успешное обновление токенов

При успешном запросе сервер вернет статус 200 OK и JSON-объект. Обратите внимание, что вместе с access_token возвращается и новый refresh_token.

{
  "access_token": "koPsldA...",
  "expires_in": 3600,
  "id_token": "koPsldA...",
  "refresh_token": "lspOenscaASdk...",
  "token_type": "Bearer"
}
ПараметрТипОписание
access_tokenstringЭтот токен вам понадобится для получения информации о пользователе. Подробнее см. в разделе Информация о пользователе.
expires_inintВремя жизни access_token в секундах.
id_tokenstringJWT-токен, содержащий в себе идентификационные данные пользователя и мета информацию.
refresh_tokenstringНовый токен для последующего обновления access_token.
token_typestringТип токена. Всегда возвращается значение Bearer.

3. Получение и обновление токенов с ошибкой

Логика обработки ошибок одинакова как для получения, так и для обновления токенов. В ситуациях, когда переданы неверные параметры, не совпадает redirect_uri или истек/не найден code / refresh_token, сервер не сможет выдать токены. В этом случае ошибка вернется в формате JSON с кодом 400 Bad Request, 401 Unauthorized или 500 Internal Server Error.

Особенности обработки ошибки невалидного клиента (invalid_client): При передаче неправильных client_id или client_secret HTTP-код ответа зависит от выбранного вами метода аутентификации:

  • Если вы использовали client_secret_basic, сервер вернет статус 401 Unauthorized and дополнительно передаст заголовок WWW-Authenticate: Basic realm="oidc".
  • Если вы использовали client_secret_post, сервер вернет статус 400 Bad Request.

Пример тела ответа с ошибкой:

{
  "error": "invalid_grant",
  "error_description": "consent not granted"
}
© 2026 ООО «Флида»

On this page