Авторизация
Шаг 1. Формирование запроса на авторизацию
Для начала авторизации пользователя сформируйте ссылку для перехода на форму авторизации Флида ID и перенаправьте по ней пользователя.
URL для перенаправления пользователя:
GET https://flida.ru/oauth
Query-параметры запроса
| Параметр | Описание |
|---|---|
client_id | Обязательный параметр Идентификатор вашего приложения. Вы можете найти его в настройках приложения в консоли. Пример: 019d9a8a-7f8b-7f54-9d4e-4a9ecc9fc609 |
redirect_uri | Обязательный параметр URL-адрес, на который будет перенаправлен пользователь после успешной или неуспешной авторизации. Должен в точности совпадать с одним из URL, указанных в настройках приложения в консоли, в разделе Платформы | WEB. Пример: https://myapp.ru/callback |
state | Обязательный параметр Случайная строка до 255 символов для защиты от CSRF-атак. Флида ID вернет это значение без изменений при редиректе. Пример: CNTMQS56FJLNBRKWIC |
response_type | Обязательный параметр Нужный тип ответа. Для данного сценария всегда передавайте значение code. |
code_challenge | Обязательный параметр Значение code_verifier, преобразованное с помощью code_challenge_method и закодированное в base64.Пример: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM |
code_challenge_method | Обязательный параметр Метод преобразования code_verifier в code_challenge. Всегда передавайте значение S256. |
scope | Необязательный параметр Список запрашиваемых scopes, разделенных пробелом. По умолчанию включены openid и offline_access(Их можно не передавать). |
Пример сформированного URL
GET https://flida.ru/oauth?client_id=019d9a8a-7f8b-7f54-9d4e-4a9ecc9fc609&redirect_uri=https://myapp.ru/callback&state=CNTMQS56FJLNBRKWIC5KGMRH2R&response_type=code&code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM&code_challenge_method=S256&scope=nameДоступные Scope
Если вам требуются данные пользователя, укажите нужные атрибуты в параметре scope.
scope, которые были предварительно выбраны в настройках вашего
приложения в консоли.| Scope | Описание |
|---|---|
name | ФИО. Отчество может отсутствовать. Пример: Пушкин Александр Сергеевич |
nickname | Псевдоним. Генерируется на основе ФИО, если не указан явно. Пример: Пушкин А. С. |
date_of_birth | Дата рождения. Формат YYYY-MM-DD. Пример: 2001-01-02 |
sex | Пол. Доступные значения: female (женский) или male (мужской).Пример: female |
phone | Номер телефона. Пример: +79107777777 |
email | Адрес электронной почты. Пример: test@test.ru |
Шаг 2. Получение и обработка ответа
После того как пользователь пройдет авторизацию, Флида ID перенаправит его обратно на адрес, переданный в параметре redirect_uri.
Успешная авторизация
В случае успеха вы получите 302 Redirect с парметрами code и state:
HTTP/1.1 302 Found
Location: https://myapp.ru/callback?code=gTqEcwBiRN3VE2ttxc...&state=CNTMQS56...code— временный код, который нужно обменять на Access, Refresh и ID токены. Подробнее см. в разделе Получение и обновление токенов.state— параметр, который вы передали на первом шаге.
state с исходным. Если они отличаются, прервите процесс во
избежание CSRF-атак.Авторизация с ошибкой
Если пользователь откажется дать права приложению или в запросе будут ошибки, перенаправление всё равно произойдет, но вместо code вернутся параметры ошибки:
HTTP/1.1 302 Found
Location: https://myapp.ru/callback?error=access_denied&error_description=consent%20is%20not%20granted&state=CNTMQS56...Критические ошибки
В ситуациях, когда переданы критически неверные параметры или возникают внутренние ошибки сервера, Флида ID не сможет безопасно перенаправить пользователя обратно. В этом случае мы вернем ее в формате JSON с кодом 400 Bad Request или 500 Internal Server Error.
Пример тела ответа с критической ошибкой:
{
"error": "invalid_request",
"error_description": "invalid client_id"
}