Документация

Документация

Авторизация через мессенджеры вместо SMS — без расходов на каждое сообщение. Каждый авторизованный пользователь доступен для уведомлений по номеру телефона через тех же ботов. Система сама выбирает мессенджер, а вы задаёте приоритет.

Hosted Login — авторизация через редирект

Самый простой вариант интеграции. Вы перенаправляете пользователя на нашу страницу, мы показываем интерфейс авторизации и возвращаем пользователя обратно с ID сессии.

Последовательность действий

Ваш сайт перенаправляет пользователя на:

https://id.antirius.com/login/YOUR_APP_ID?return_url=https://yoursite.com/callback

Hosted-страница встраивает стандартный виджет с poll_type: "status" — опрашивает только статус (и messenger_opened), затем редирект при confirmed.

Пользователь открывает мессенджер и подтверждает вход через бота.

После успешной авторизации — редирект на callback-URL с session_id:

https://yoursite.com/callback?session_id=SESSION_ID

Бэкенд один раз вызывает GET /api/v1/auth/session/{session_id}?type=full — JWT и user (сессия после этого неактивна для повторной выдачи).

GET https://id.antirius.com/api/v1/auth/session/SESSION_ID?type=full

// Response (confirmed, first full poll):
{
  "status": "confirmed",
  "poll_type": "full",
  "token": "eyJhbG...",
  "user": {
    "_id": "...",
    "user_id": "...",
    "first_name": "...",
    "username": "..."
  },
  "app_id": "YOUR_APP_ID"
}

Страница hosted login использует тот же widget.js, что и на сайте. Отдельный UI не нужен — в init указываются poll_type: "status" и return_url.

Пример callback

# Hosted Login — redirect flow

# 1. Redirect user to hosted page (return_url must be in Allowed domains)
window.location.href = 'https://id.antirius.com/login/YOUR_APP_ID?return_url='
  + encodeURIComponent('https://yoursite.com/callback');

# 2. On callback — exchange session_id for JWT (once, type=full)
# GET https://yoursite.com/callback?session_id=SESSION_ID

const sessionId = new URLSearchParams(location.search).get('session_id');
const res = await fetch(
  'https://id.antirius.com/api/v1/auth/session/' + sessionId + '?type=full'
);
const { token, user } = await res.json();

# Hosted page uses the same widget with poll_type: "status" (you do not embed this on your site):
# AuthBotsWidget.init({ app_id: '...', poll_type: 'status', return_url: '...' });

Добавьте origin каждого сайта (схема и хост callback) в «Разрешённые домены» в кабинете. URL по умолчанию (вкладка Hosted Login) и параметр return_url в запросе должны использовать хост из этого списка — иначе сервис вернёт 400.