73 lines
3.6 KiB
Markdown
73 lines
3.6 KiB
Markdown
|
|
# 🔍 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=...`
|
|||
|
|
- ✅ Фронтенд получает успешную аутентификацию
|