Загрузка...

Telegram WebApp, проверка данных пользовотеля на подлинность [Next.js]

Тема в разделе Веб-разработка создана пользователем renameduser_8505695 23 июл 2024. 313 просмотров

  1. renameduser_8505695
    renameduser_8505695 Автор темы 23 июл 2024 Заблокирован(а) 5 21 июн 2024
    Это тема создана для тех кто создает WebApp
    JS
    "use server";
    import crypto from "crypto";

    const verifyTelegramData = async ({
    iniData,
    botToken,
    }: {
    iniData: any;
    botToken: any;
    }) => {
    const { auth_date, hash, query_id, user } = iniData;

    const dataCheckString = Object.keys({ auth_date, query_id, user })
    .sort()
    .map((key) => `${key}=${{ auth_date, query_id, user }[key]}`)
    .join("\n");

    const secretKey = crypto
    .createHmac("sha256", "WebAppData")
    .update(botToken)
    .digest();

    const computedHash = crypto
    .createHmac("sha256", secretKey)
    .update(dataCheckString)
    .digest("hex");

    return computedHash == hash;
    };

    export default verifyTelegramData;

    После этого кидаем туда данные которые получили от тг
    JS
    const handleUser = async () => {
    let initData = Telegram.WebApp.initData;

    const response = await verifyTelegramData({
    iniData: parse(initData),
    botToken: process.env.NEXT_PUBLIC_BOT_TOKEN,
    });
    console.log(response);

    };
    useEffect(() => {
    handleUser();
    }, []);
    И так response вернет на true если пользователь от зашел по телеграм а если кто-то попробует сменить данные наебать вас то у него ничего не получится​
     
Top
Загрузка...