Авторизация через IZEK
Серверный сценарий для входа на сторонний сайт. Пользователь видит запрошенные права и сам решает, разрешить доступ или отказаться.
Создайте приложение
Откройте API-приложения, укажите название и точный адрес возврата. Для обычного сайта нужен HTTPS; HTTP разрешён только для localhost, 127.0.0.1 и ::1.
Обменяйте code на токен
https://izek.ru/api/oauth/tokengrant_typeобязательныйauthorization_code
codeобязательныйОдноразовый код из callback.
client_idобязательныйID вашего приложения.
client_secretобязательныйСекрет приложения, только сервер-сервер.
redirect_uriобязательныйТот же адрес, что был в первом запросе.
curl -X POST 'https://izek.ru/api/oauth/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode 'code=CODE_FROM_CALLBACK' \
--data-urlencode 'client_id=CLIENT_ID' \
--data-urlencode 'client_secret=CLIENT_SECRET' \
--data-urlencode 'redirect_uri=https://example.ru/auth/izek'Поля ответа
access_tokenBearer-токен для API-запросов.token_typeВсегда Bearer.expires_inСрок жизни в секундах, обычно 3600.scopeФактически выданные права.refresh_tokenПоле совместимости. Обновление через refresh_token пока не поддерживается; после истечения начните авторизацию заново.Получите профиль
https://izek.ru/api/userinfocurl 'https://izek.ru/api/userinfo' \
-H 'Authorization: Bearer ACCESS_TOKEN'Параметры ответа
subСтроковый идентификатор пользователя.idЧисловой идентификатор; нужен scope profile.usernameЛогин пользователя.nameОтображаемое имя.avatar, avatar_urlАбсолютная ссылка на актуальный аватар.avatar_small, avatar_medium, avatar_largeСовместимые ссылки для разных размеров.avatar_originalОригинал пользовательского изображения, если он загружен.avatar_has_customtrue, если пользователь установил свой аватар.profile_urlАдрес профиля в IZEK.emailВозвращается только со scope email.{
"sub": "42",
"id": 42,
"username": "alex",
"name": "Алексей",
"avatar_url": "https://izek.ru/avatar?id=42&v=…",
"avatar_has_custom": true,
"profile_url": "https://izek.ru/",
"email": "alex@example.ru"
}Ошибки и ограничения
invalid_clientНе найден Client ID или не совпал Secret.invalid_grantCode истёк, уже использован или выпущен для другого callback.invalid_tokenBearer-токен отсутствует, истёк или отозван.unsupported_grant_typeПоддерживается только authorization_code.rate_limitedСлишком много запросов. Повторите позже.Перед обменом кода сравните полученный state с сохранённым значением. Не записывайте токены и Secret в URL или клиентские логи.
Компонент для InstantCMS
Добавляет вход через IZEK ID, связывает пользователя по email и синхронизирует аватар. Поддерживаются InstantCMS 2.18.1+ и PHP 8.1+.
- Установите ZIP через панель InstantCMS.
- Создайте в IZEK API-приложение и скопируйте callback компонента в поле
redirect_uri. - Укажите Client ID, Client Secret и базовый адрес
https://izek.ru. - Оставьте scopes
profile email.