Не запускается функция js указанная в data-onauth tg login widget

Рейтинг: 0Ответов: 1Опубликовано: 08.08.2023

Всем добрый день. Столкнулся с проблемой Telegram Login Widget. Использую код из примера на официальном сайте.

<script async src="https://telegram.org/js/telegram-widget.js?22" data-telegram-login="samplebot" data-size="large" data-onauth="onTelegramAuth(user)" data-request-access="write"></script>
<script type="text/javascript">
  function onTelegramAuth(user) {
    alert('Logged in as ' + user.first_name + ' ' + user.last_name + ' (' + user.id + (user.username ? ', @' + user.username : '') + ')');
  }
</script>

Проблема заключается в том, что функция onTelegramAuth(user) попросту не вызывается. Сайт висит на хостинге с доменом, все настройки указаны верно. Пытался вывести в консоль через js инфу для отладки, но она не отображается. Никаких других ошибок в консоли нет вообще. Сама авторизация телеграм работает. Пытался менять название функции и т.п. Даже у chatgpt спрашивал. Сам сайт написан на django 4.2.1 если это имеет значение. Пробовал авторизироваться и на пк версии сайта и через телефон, чистил кеш.

Так же запустил сайт локально. Авторизация работает но функция в data-onauth не запускается, не работает и перенаправление data-auth-url. При авторизации в консоли django вылезает ошибка Broken pipe from ('127.0.0.1', 51534)

Ответы

▲ 0

Наичная с Django 4 введена политика CROSS same-origin (по умолчанию), а так как виджет телеграм имеет другой origin (oauth.telegram.org), то в настройках Django нужно указать SECURE_CROSS_ORIGIN_OPENER_POLICY = "same-origin-allow-popups" или вообще поставить None.

Я указал первое у меня все заработало

и еще скорее всего нужно будет задекорировать урл а то может быть ошибка Forbidden (403) CSRF verification failed. Request aborted

urls.py

from django.views.decorators.csrf import csrf_exempt


urlpatterns = [
 path('/', csrf_exempt(views.sign_in), name='signIn'),
]