mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-09-13 16:23:08 +00:00
fix(auth): читать initData из моста Telegram, а не только из кэша SDK
retrieveRawInitData() ищет параметры запуска по цепочке location.href -> запись performance о навигации -> кэш tapps/launchParams в sessionStorage, записывая удачный результат обратно. Последние два источника привязаны к документу, а не к текущему запуску мини-аппы: как только SPA сменила маршрут и hash с tgWebAppData ушёл из адреса, остаются данные ПЕРВОГО запуска в этой сессии WebView. На iOS WebView переживает переоткрытия, и SDK молча отдаёт старую копию. Бэкенд принимает initData с auth_date не старше 30 суток, поэтому застрявшая копия рано или поздно пересекает порог и вход отваливается с «Invalid or expired Telegram authentication data». Спрашиваем ещё и window.Telegram.WebApp.initData (официальный мост, telegram-web-app.js из index.html) и берём вариант со свежим auth_date: какой источник протух, зависит от платформы, «самый свежий» верен всегда. Все три места чтения initData сведены в один модуль.
This commit is contained in:
@@ -13,11 +13,11 @@ import {
|
||||
enableVerticalSwipes as sdkEnableVerticalSwipes,
|
||||
expandViewport,
|
||||
retrieveLaunchParams,
|
||||
retrieveRawInitData,
|
||||
themeParamsState,
|
||||
closeMiniApp as sdkCloseMiniApp,
|
||||
postEvent,
|
||||
} from '@telegram-apps/sdk-react';
|
||||
import { getTelegramInitData as readTelegramInitData } from '../utils/telegramInitData';
|
||||
|
||||
const FULLSCREEN_CACHE_KEY = 'cabinet_fullscreen_enabled';
|
||||
|
||||
@@ -90,11 +90,7 @@ export function isTelegramMobile(): boolean {
|
||||
}
|
||||
|
||||
export function getTelegramInitData(): string | null {
|
||||
try {
|
||||
return retrieveRawInitData() || null;
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
return readTelegramInitData();
|
||||
}
|
||||
|
||||
function isDarkHexColor(hex: string): boolean {
|
||||
|
||||
Reference in New Issue
Block a user