Проблема с редиректом после авторизации пользователя в телеграме, как исправить?

Ссылка скопирована
2 ответов

Ниже приведён виджет авторизации через телеграм. В атрибуте "data-auth-url" указан url для редиректа. Пробовал на версии django 2.0 всё работает хорошо, обработчик GET запроса тоже хорошо работает, при этом от telegram не поступает get запроса на сервер. Уже 3 дня не могу решить проблему. Я только учусь программировать на django, поэтому многих моментов могу не знать.

<script async src="https://telegram.org/js/telegram-widget.js?21" data-telegram-login="relife_oauth_bot"         data-size="large" data-radius="20" data-auth-url="https://e247-83-142-10-54.eu.ngrok.io/register_tg/"         data-request-access="write"></script>

<script async src="https://telegram.org/js/telegram-widget.js?21" data-telegram-login="relife_oauth_bot" data-size="large" data-radius="20" data-auth-url="https://e247-83-142-10-54.eu.ngrok.io/register_tg/" data-request-access="write"></script>

Дополнительно:

Dr. Bacon, всё открывается и я авторизуюсь через телеграм, принимаю запрос авторизации, но после одобрения окно закрывается и всё. Для примера я взял проект на django 2.0 и переписал на django 4.1

Я написал обработчик, который исправно работает (кусочек кода из urls.py)

re_path(r'^register_tg/(?P<tg_user_data>.*)$', views.register_tg)

re_path(r'^register_tg/(?P<tg_user_data>.*)$', views.register_tg)

  • Dr. Bacon, да
  • Dr. Bacon, я понимаю, просто у меня по другому регулярное выражение не работало
  • Так же, если я на прямую передаю данные, которые по идее должны поступать от телеграма в виде GET запроса, то всё работает замечательно (register_tg/?id=*id*&first_name=*first_name*&username=*username*&photo_url=*photo_url*&auth_date=*auth_date*&hash=*hash*)
  • Пользователь добавляется в базу данных и я могу работать с этими данными
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Андрей PHP Ответ

    Для решения проблемы с редиректом после авторизации пользователя в телеграме, можно использовать следующий подход:

    1. После успешной авторизации пользователя в телеграме, вам необходимо получить информацию о пользователе, например, его ID или другие данные, которые могут помочь в дальнейшем редиректе.

    2. Затем вам нужно создать скрипт или метод на вашем сервере, который будет обрабатывать полученные данные от телеграма и осуществлять редирект на нужную страницу. Например, если вы используете PHP, вы можете создать файл с кодом для редиректа.

    3. В этом скрипте вы можете использовать функцию header() для выполнения редиректа. Например:

     

    4. Важно убедиться, что перед использованием функции header() не было вывода никаких данных на страницу, так как это может вызвать ошибку.

    5. Наконец, вам нужно настроить вашего бота в телеграме таким образом, чтобы после авторизации он отправлял данные на ваш сервер для последующего редиректа.

    Следуя этим шагам, вы сможете исправить проблему с редиректом после авторизации пользователя в телеграме.

    Другие ответы (1) Ответить на вопрос
    Игорь Волков

    Для решения проблемы с редиректом после авторизации пользователя в телеграме, необходимо использовать параметр `redirect_url` при инициализации процесса авторизации.

    Прежде всего, убедитесь, что вы правильно настроили параметр `redirect_url` в настройках вашего приложения в телеграме. Этот параметр определяет URL-адрес, на который пользователь будет перенаправлен после успешной авторизации. Убедитесь, что указали правильный URL-адрес, на который вы хотите перенаправить пользователя.

    Затем, при создании кнопки или ссылки для авторизации пользователя, добавьте параметр `redirect_url` со значением URL-адреса, на который вы хотите перенаправить пользователя после авторизации. Например, если вы используете бота в телеграме, то ваша ссылка для авторизации может выглядеть следующим образом:

    https://telegram.me/your_bot?start=auth&redirect_url=https://yourwebsite.com/callback

    https://telegram.me/your_bot?start=auth&redirect_url=https://yourwebsite.com/callback

    После успешной авторизации пользователя, телеграм будет перенаправлять пользователя на указанный вами URL-адрес. Убедитесь, что на вашем сайте настроен обработчик для этого URL-адреса, который будет выполнять необходимые действия после авторизации пользователя.

    Таким образом, используя параметр `redirect_url` при инициализации процесса авторизации в телеграме, вы сможете успешно решить проблему с редиректом после авторизации пользователя.

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно