diff --git a/moderation/frontend/src/App.jsx b/moderation/frontend/src/App.jsx index a77abe7..9679c6c 100644 --- a/moderation/frontend/src/App.jsx +++ b/moderation/frontend/src/App.jsx @@ -253,15 +253,40 @@ export default function App() { } console.log('[Telegram Widget] ✅ Сообщение от oauth.telegram.org'); - console.log('[Telegram Widget] 📨 Данные:', event.data); + console.log('[Telegram Widget] 📨 Данные (raw):', event.data); + console.log('[Telegram Widget] Тип данных:', typeof event.data); // Telegram виджет отправляет данные через postMessage - if (event.data && typeof event.data === 'object') { - const userData = event.data; - console.log('[Telegram Widget] 🔵 Данные от виджета через postMessage:', userData); - await onTelegramAuthHandler(userData); + // Данные могут быть строкой JSON или объектом + let parsedData = event.data; + + // Если данные - строка, попробуем распарсить + if (typeof event.data === 'string') { + try { + parsedData = JSON.parse(event.data); + console.log('[Telegram Widget] ✅ Данные распарсены из JSON:', parsedData); + } catch (e) { + console.error('[Telegram Widget] ❌ Ошибка парсинга JSON:', e); + return; + } + } + + // Проверяем, что это событие авторизации + if (parsedData && typeof parsedData === 'object') { + // Telegram виджет отправляет данные в формате: {event: "auth_user", auth_data: {...}} + if (parsedData.event === 'auth_user' && parsedData.auth_data) { + const userData = parsedData.auth_data; + console.log('[Telegram Widget] 🔵 Данные авторизации от виджета:', userData); + await onTelegramAuthHandler(userData); + } else if (parsedData.id && parsedData.hash) { + // Или данные уже в правильном формате + console.log('[Telegram Widget] 🔵 Данные от виджета (прямой формат):', parsedData); + await onTelegramAuthHandler(parsedData); + } else { + console.log('[Telegram Widget] ⚠️ Неизвестный формат данных:', parsedData); + } } else { - console.log('[Telegram Widget] ⚠️ Данные не в ожидаемом формате:', typeof event.data); + console.log('[Telegram Widget] ⚠️ Данные не в ожидаемом формате:', typeof parsedData); } };