initData в Telegram Mini Apps).
Проверив подпись на своём сервере, вы можете доверять этим данным и авторизовать пользователя
без собственной регистрации.
Как это работает
- Exode открывает вашу страницу в iframe с адресом
https://ваш-домен/…#exodeInitData=<строка>. - Мини-приложение читает строку из fragment (
retrieveInitData) и отправляет своему бэкенду. - Бэкенд проверяет подпись секретом страницы (
verifyInitData) и получает данные пользователя.
В мини-приложении (браузер)
retrieveInitData читает fragment один раз, очищает его из адресной строки
(чтобы подписанные данные не утекали при копировании ссылки) и кэширует значение.
На вашем сервере (Node.js)
auth_date функция бросает исключение.
Формат подписи
Если вы не используете Node.js — проверить подпись можно вручную на любом языке:Рекомендации по безопасности
- Ограничьте окно
auth_date(maxAgeSec) — 24 часа или меньше. - Отдавайте на страницах мини-приложения заголовок
Content-Security-Policy: frame-ancestors https://<домен-вашей-школы>— это гарантирует, что приложение встроено именно в Exode. - Передавайте
targetOriginв конструкторExodeMiniApp— origin страницы школы. - Никогда не проверяйте подпись в браузере: секрет не должен покидать ваш сервер.
- При компрометации секрета перевыпустите его в админке — старые initData перестанут проходить проверку.
Обновлено: 2026-08-19 10:50 UTC