# 🔍 OAuth Debug Checklist ## 🚨 Проблема: Google callback получает параметры, но фронтенд получает auth_failed ### ✅ Диагностика выполнена: 1. **✅ OAuth Endpoint существует**: `/oauth/google/callback` - роут настроен в `main.py` 2. **⚠️ OAuth провайдеры**: Настроены на продакшн сервере (Dokku), локально отсутствуют 3. **✅ Логирование добавлено**: Детальные логи на каждом этапе OAuth flow ### 🎯 Правильный подход к диагностике продакшн проблем: ### 🔧 Исправления внесены: 1. **Улучшена обработка ошибок**: Правильный redirect на testing.discours.io с error параметрами 2. **Добавлена диагностика**: Проверка конфигурации OAuth провайдеров 3. **Создан скрипт проверки**: `scripts/check_oauth_config.py` ### 🎯 Диагностика продакшн OAuth проблем: #### 1. Анализ продакшн логов (приоритет): ```bash # Смотрим логи OAuth callback на продакшн сервере dokku logs discours --tail 100 | grep -E "(OAuth|callback|google)" # Ищем конкретные ошибки в логах dokku logs discours --tail 500 | grep -E "(❌|ERROR|Exception)" ``` #### 2. Проверка переменных окружения на сервере: ```bash # Проверяем настройки OAuth на продакшн dokku config:show discours | grep -E "(GOOGLE|GITHUB|OAUTH)" ``` #### 3. Проверка redirect URI в Google Console: - Должен быть: `https://v3.dscrs.site/oauth/google/callback` - Проверить точное совпадение URL - Убедиться что HTTPS включен #### 4. Тестирование с детальными логами: - Логи уже добавлены в код - Смотреть продакшн логи во время OAuth попытки - Анализировать каждый этап: token exchange, profile fetch, user creation ### 🔍 Логи для мониторинга: После настройки OAuth провайдеров, логи должны показывать: ``` ✅ Got access token for google: True ✅ Got user profile for google: id=..., email=..., name=... ✅ User created/updated for google: user_id=..., email=... ✅ Session token created for google: token_length=... 🔗 OAuth redirect URL: https://testing.discours.io/oauth?redirect_url=... OAuth успешно завершен для google, user_id=... ``` ### 🚨 Критические проверки: 1. **Redirect URI в Google Console** должен точно совпадать с `https://v3.dscrs.site/oauth/google/callback` 2. **HTTPS обязателен** для продакшена 3. **Переменные окружения** должны быть установлены на сервере 4. **Перезапуск сервера** после установки переменных окружения ### 📊 Ожидаемый результат: После настройки OAuth: - ✅ Google callback обрабатывается успешно - ✅ Пользователь создается/обновляется - ✅ Session token устанавливается в httpOnly cookie - ✅ Редирект на `https://testing.discours.io/oauth?redirect_url=...` - ✅ Фронтенд получает успешную аутентификацию