Получение данных пользователя
Запрос
После того как пользователь вернулся на ваш сайт с параметром ?token= (см. «Авторизация»), отправьте POST-запрос на:
https://id.kodari.ru/id/api/jwd/verify_token.php
{
"token": "<jwt из параметра ?token=>",
"token_org": "<API Secret вашего сервиса>"
}
token — не постоянный идентификатор сервиса, а одноразовый JWT конкретного входа. token_org — секретный ключ сервиса, который показывается один раз при создании сервиса в панели разработчика.
Какие данные можно получить
ID пользователя (user_id) приходит в ответе всегда. Остальные поля не обязательны — сервис получает только те данные, которые он запросил при создании сервиса (раздел «Запрашиваемые данные пользователя» в панели разработчика, см. «Создание»):
| Поле в ответе | Что это |
|---|---|
| name | имя пользователя |
| username | username (логин) |
| электронная почта | |
| phone | номер телефона |
| avatar | ссылка на аватар (изображение профиля) |
| tg_id | Telegram ID, если аккаунт привязан к Telegram |
Поле, которое сервис не запрашивал (или которого нет у пользователя — например, Telegram ID без привязки), просто отсутствует в ответе, а не приходит как null.
Успешный ответ
{
"authenticated": true,
"user_id": 1,
"org_id": 4,
"name": "Sova",
"username": "Sova",
"email": "v@gmail.com",
"phone": "+79991234567",
"avatar": "https://id.kodari.ru/id/content/avatars/xxxxx.jpg",
"tg_id": 123456789,
"token": "<новый jwt>"
}
| Поле | Обязательное | Описание |
|---|---|---|
| authenticated | да | статус авторизации |
| user_id | да | ID пользователя в Kodari |
| org_id | да | ID вашего сервиса |
| token | да | новый JWT на этот же сеанс — сохраните и используйте его в следующем вызове verify_token.php вместо исходного, токен ротируется при каждой проверке |
| name, username, email, phone, avatar, tg_id | нет | приходят, только если сервис запросил соответствующие данные при создании — см. таблицу выше |
Ошибки
| HTTP код | Причина |
|---|---|
| 400 | не передан token или token_org, либо токен не содержит org_id |
| 401 | токен недействителен, истёк, либо сессия по нему не найдена |
| 403 | неверный token_org, сервис неактивен или заблокирован, либо пользователь не подключил (или отключил) сервис |
| 404 | токен валиден, но пользователь не найден |
| 405 | запрос отправлен не методом POST |
В теле ошибки всегда есть поле error с текстом причины.
Пример на PHP
<?php
$token = $_GET['token'] ?? '';
$secret_token = 'your_secret_token'; // API Secret вашего сервиса
$postData = json_encode([
'token' => $token,
'token_org' => $secret_token,
]);
$ch = curl_init('https://id.kodari.ru/id/api/jwd/verify_token.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$response = curl_exec($ch);
curl_close($ch);
$user = json_decode($response, true);
if ($user && ($user['authenticated'] ?? false) === true) {
echo 'Пользователь авторизован, ID: ' . $user['user_id'];
// сохраните $user['token'] для следующей проверки
} else {
echo 'Ошибка: ' . ($user['error'] ?? 'нет ответа');
}