🌙

Получение данных пользователя

Запрос

После того как пользователь вернулся на ваш сайт с параметром ?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имя пользователя
usernameusername (логин)
emailэлектронная почта
phoneномер телефона
avatarссылка на аватар (изображение профиля)
tg_idTelegram 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'] ?? 'нет ответа');
}
134 просмотра