2025-11-04 21:51:05 +00:00
|
|
|
|
╔═══════════════════════════════════════════════════════════════════╗
|
|
|
|
|
|
║ ║
|
|
|
|
|
|
║ 🔧 TELEGRAM OAUTH ДЛЯ СТОРОННИХ КЛИЕНТОВ 🔧 ║
|
|
|
|
|
|
║ ║
|
|
|
|
|
|
╚═══════════════════════════════════════════════════════════════════╝
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ИЗМЕНЕНИЯ:
|
|
|
|
|
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
|
|
|
|
|
|
|
|
|
|
✅ 1. Убран Mock User
|
|
|
|
|
|
• Удалена функция getMockUser()
|
|
|
|
|
|
• Убрано использование mock user из App.jsx
|
|
|
|
|
|
• Убрано из api.js interceptor
|
|
|
|
|
|
|
|
|
|
|
|
✅ 2. Добавлен Telegram Login Widget
|
|
|
|
|
|
• Компонент TelegramLogin.jsx
|
|
|
|
|
|
• Использует официальный Telegram Login Widget
|
|
|
|
|
|
• Показывается для сторонних клиентов и браузера
|
|
|
|
|
|
|
|
|
|
|
|
✅ 3. Backend OAuth Route
|
|
|
|
|
|
• /api/auth/oauth - новый endpoint
|
|
|
|
|
|
• Проверка подписи Telegram OAuth
|
|
|
|
|
|
• Создание/обновление пользователя
|
|
|
|
|
|
|
|
|
|
|
|
✅ 4. Обновлена логика авторизации
|
|
|
|
|
|
• Если нет Telegram Web App API → показывается Login Widget
|
|
|
|
|
|
• После авторизации через Widget → создается сессия
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
НАСТРОЙКА:
|
|
|
|
|
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
|
|
|
|
|
|
|
|
|
|
1. Получить имя бота от @BotFather
|
|
|
|
|
|
• Используется для Telegram Login Widget
|
|
|
|
|
|
|
|
|
|
|
|
2. Установить переменную окружения:
|
|
|
|
|
|
VITE_TELEGRAM_BOT_NAME=ваше_имя_бота
|
|
|
|
|
|
|
|
|
|
|
|
3. Настроить домен в BotFather:
|
|
|
|
|
|
• /setdomain для вашего домена
|
|
|
|
|
|
• Например: nakama.glpshchn.ru
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ОБНОВЛЕНИЕ:
|
|
|
|
|
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
|
|
|
|
|
|
|
|
|
|
Frontend:
|
|
|
|
|
|
• frontend/src/App.jsx
|
|
|
|
|
|
• frontend/src/components/TelegramLogin.jsx (новый)
|
|
|
|
|
|
• frontend/src/components/TelegramLogin.css (новый)
|
|
|
|
|
|
• frontend/src/utils/api.js
|
|
|
|
|
|
• frontend/src/utils/telegram.js
|
|
|
|
|
|
|
|
|
|
|
|
Backend:
|
|
|
|
|
|
• backend/routes/auth.js
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
КОМАНДЫ:
|
|
|
|
|
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
|
|
|
|
|
|
|
|
|
|
cd /Users/glpshchn/Desktop/nakama
|
|
|
|
|
|
|
|
|
|
|
|
# Frontend
|
|
|
|
|
|
scp frontend/src/App.jsx root@ваш_IP:/var/www/nakama/frontend/src/
|
|
|
|
|
|
scp frontend/src/components/TelegramLogin.jsx root@ваш_IP:/var/www/nakama/frontend/src/components/
|
|
|
|
|
|
scp frontend/src/components/TelegramLogin.css root@ваш_IP:/var/www/nakama/frontend/src/components/
|
|
|
|
|
|
scp frontend/src/utils/api.js frontend/src/utils/telegram.js root@ваш_IP:/var/www/nakama/frontend/src/utils/
|
|
|
|
|
|
|
|
|
|
|
|
# Backend
|
|
|
|
|
|
scp backend/routes/auth.js root@ваш_IP:/var/www/nakama/backend/routes/
|
|
|
|
|
|
|
|
|
|
|
|
# На сервере
|
|
|
|
|
|
ssh root@ваш_IP "cd /var/www/nakama/frontend && npm run build"
|
|
|
|
|
|
ssh root@ваш_IP "pm2 restart nakama-backend"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ВАЖНО:
|
|
|
|
|
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
|
|
|
|
|
|
|
|
|
|
1. Telegram Login Widget требует:
|
|
|
|
|
|
• Домен должен быть настроен в BotFather
|
|
|
|
|
|
• Использовать HTTPS (в production)
|
|
|
|
|
|
• Правильное имя бота
|
|
|
|
|
|
|
|
|
|
|
|
2. Проверка подписи:
|
|
|
|
|
|
• Включена, если есть TELEGRAM_BOT_TOKEN
|
|
|
|
|
|
• В production рекомендуется строгая проверка
|
|
|
|
|
|
|
|
|
|
|
|
3. Безопасность:
|
|
|
|
|
|
• Теперь используется официальная авторизация Telegram
|
|
|
|
|
|
• Нет mock users
|
|
|
|
|
|
• Все пользователи верифицированы через Telegram
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 минуты
|
|
|
|
|
|
|
2025-11-20 20:50:14 +00:00
|
|
|
|
|