IZEK API
Подключите вход через аккаунт IZEK. Для доступа к данным Вебмастера запросите отдельные scope — пользователь увидит их на экране согласия.
1. Создайте приложение
В API-приложениях задайте название и точный HTTPS redirect_uri. Для localhost разрешён HTTP. Client Secret показывается только при создании или сбросе.
2. Перенаправьте пользователя
GET https://izek.ru/api/oauth/authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=CALLBACK&scope=profile%20email&state=RANDOM_STATEХраните state в сессии своего сайта и сравните его после возврата. Код одноразовый и действует 5 минут.
3. Обменяйте code на токен
POST https://izek.ru/api/oauth/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&code=AUTH_CODE&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&redirect_uri=CALLBACK{"access_token":"…","refresh_token":"…","token_type":"Bearer","expires_in":3600,"scope":"profile email"}4. Получите профиль
GET https://izek.ru/api/userinfo
Authorization: Bearer ACCESS_TOKENScope profile даёт идентификатор, логин, имя, аватар и ссылку профиля; email добавляет email. Ответы JSON используют UTF-8.
Ошибки и безопасность
invalid_client означает неверный Client ID или Secret, invalid_grant — истёкший или уже использованный code, invalid_token — недействительный Bearer token. Не передавайте Secret в браузер и не храните access token в URL.
Пример на PHP
<?php
$params = ['grant_type' => 'authorization_code', 'code' => $_GET['code'],
'client_id' => getenv('IZEK_CLIENT_ID'), 'client_secret' => getenv('IZEK_CLIENT_SECRET'),
'redirect_uri' => 'https://site.ru/izek/callback'];
$response = file_get_contents('https://izek.ru/api/oauth/token', false, stream_context_create(['http' => [
'method' => 'POST', 'header' => "Content-Type: application/x-www-form-urlencoded\r\n",
'content' => http_build_query($params), 'ignore_errors' => true]]));
$token = json_decode($response, true, flags: JSON_THROW_ON_ERROR);Перед обменом кода обязательно сверяйте state, который вы создали до перенаправления пользователя.
Готовый компонент для InstantCMS
Компонент добавляет кнопку «Войти с IZEK ID» на формы входа и регистрации, создаёт или связывает пользователя по email и синхронизирует аватар. Поддерживается InstantCMS 2.18.1+ и PHP 8.1+.
- Скачайте и установите компонент через панель InstantCMS.
- В IZEK создайте API-приложение; укажите callback из настроек компонента как точный
redirect_uri. - В настройках компонента заполните Client ID, Client Secret и адрес этого сайта:
https://izek.ru. - Оставьте scopes
profile email. Права Вебмастера компоненту не нужны.
Справочник параметров
client_idИдентификатор приложения из личного кабинета.
redirect_uriПолностью совпадает с адресом из настроек приложения.
scopeЗапрашиваемые права: profile, email и права Вебмастера при необходимости.
stateСлучайная строка вашей сессии. Проверяйте её после возврата пользователя.
Полный пример cURL
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'
curl 'https://izek.ru/api/userinfo' -H 'Authorization: Bearer ACCESS_TOKEN'Токен и Client Secret должны оставаться на сервере вашего приложения. В браузер передавайте только собственную сессию сайта.
Возврат на ваш сайт
https://example.ru/auth/izek?code=AUTHORIZATION_CODE&state=RANDOM_STATEСначала сравните state с сохранённым значением. Затем обменяйте одноразовый code на токен серверным POST-запросом.