Задать вопрос

Почему Telegram Login Widget не присылает сообщения?

Добрый день, коллеги!
Столкнулся с проблемой и не могу найти решение.
Заказчик хочет сделать авторизацию в админке через телеграм, я подумал ну ок, нет проблем. Сначала разрабатывал весь необходимый функционал локально, т.к. насколько я понял тестить tg login widget нужно на проде. Купил сервер, домен, задеплоил и приступил к подключению авторизации. Создал бота, установил привязанный домен, по началу все было отлично, но не долго)))
Виджет открывается, я ввожу телефон, мне выдает что то типо "Сообщение отправлено в телеграм, подтвердите вход", вот только сообщение почему то не приходит. Вынес все мозги нейронке, проверил на разных чекерах валидность SSL сертификата, но все попусту. Есть одна мысль, что мб бот блокирует домен .xyz (дешевый, часто используется для всяких скам сайтов). Ну, у меня без всякого фишинга и скама, обычная адмнка для управления основным приложением.

import {type FC, useEffect, useRef} from 'react';
import { observer } from 'mobx-react-lite';
import {type TelegramUser} from "@/libs/types/telegram";
import {authStore} from "@/entities/auth/slice";

interface TelegramLoginWidgetProps {
    botName: string;
    buttonSize?: 'large' | 'medium' | 'small';
    cornerRadius?: number;
    requestAccess?: boolean;
    usePic?: boolean;
    lang?: string;
}

declare global {
    interface Window {
        onTelegramAuth?: (user: TelegramUser) => void;
    }
}

const TelegramLoginWidget: FC<TelegramLoginWidgetProps> = observer(({
                                                                              botName,
                                                                              buttonSize = 'large',
                                                                              cornerRadius = 10,
                                                                              requestAccess = true,
                                                                              usePic = false,
                                                                              lang = 'ru'
                                                                          }) => {
    const ref = useRef<HTMLDivElement>(null);

    useEffect(() => {
        window.onTelegramAuth = (user: TelegramUser) => {
            // authStore.handleTelegramAuth(user);
            console.log('onTelegramAuth', user);
        };

        if (ref.current) {
            ref.current.innerHTML = '';

            const script = document.createElement('script');
            script.src = 'https://telegram.org/js/telegram-widget.js?22';
            script.setAttribute('data-telegram-login', botName);
            script.setAttribute('data-size', buttonSize);
            script.setAttribute('data-corner-radius', cornerRadius.toString());
            script.setAttribute('data-request-access', 'write');
            script.setAttribute('data-userpic', 'false');
            script.setAttribute('data-lang', lang);
            script.setAttribute('data-onauth', 'onTelegramAuth(user)');
            script.async = true;

            ref.current.appendChild(script);
        }

        return () => {
            if (window.onTelegramAuth) {
                delete window.onTelegramAuth;
            }
        };
    }, [botName, buttonSize, cornerRadius, requestAccess, usePic, lang]);

    return <div ref={ref}/>;
});

export default TelegramLoginWidget;
  • Вопрос задан
  • 72 просмотра
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы