Files
core/docs/oauth-debug-checklist.md
Untone 0f6cc61286
Some checks failed
Deploy on push / deploy (push) Failing after 36s
mypyfix
2025-09-27 12:31:53 +03:00

73 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🔍 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=...`
- ✅ Фронтенд получает успешную аутентификацию