All checks were successful
Deploy on push / deploy (push) Successful in 7m2s
### Fixed - 🔧 **OAuth Callback URL**: Исправлено формирование callback URL - добавлен отсутствующий слеш между доменом и путем - 🔒 **OAuth HTTPS**: Принудительное использование HTTPS для callback URL в продакшне (исправляет ошибку "redirect_uri is not associated") ### Changed - 🔄 **OAuth Routes**: Возвращены к стандартному формату `/oauth/{provider}` - провайдеры не передают параметр provider в callback
5.9 KiB
5.9 KiB
🔐 Настройка OAuth Провайдеров
🎯 Архитектура OAuth
Важно понимать разделение:
- Frontend:
testing.discours.io- где пользователь нажимает кнопку входа - Backend:
v3.dscrs.site- где обрабатывается OAuth логика - Callback URL: Всегда должен указывать на backend (
v3.dscrs.site)
🔄 OAuth Flow (пошагово):
- Пользователь на
testing.discours.ioнажимает "Войти через GitHub" - Фронтенд редиректит на
v3.dscrs.site/oauth/github - Backend редиректит на
github.comс callback_uri=v3.dscrs.site/oauth/github/callback - GitHub после авторизации редиректит на
v3.dscrs.site/oauth/github/callback - Backend обрабатывает callback и редиректит обратно на
testing.discours.io
🎯 Быстрая настройка
1. Google OAuth
- Перейти в Google Cloud Console
- Создать проект или выбрать существующий
- APIs & Services → Credentials → Create Credentials → OAuth 2.0 Client ID
- Application type: Web application
- Authorized redirect URIs:
https://v3.dscrs.site/oauth/google/callback⚠️ ОБЯЗАТЕЛЬНО HTTPShttp://localhost:8000/oauth/google/callback(для разработки)
- Скопировать Client ID и Client Secret
Переменные окружения:
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
2. GitHub OAuth
- Перейти в GitHub Developer Settings
- New OAuth App
- Authorization callback URL:
https://v3.dscrs.site/oauth/github/callback⚠️ ОБЯЗАТЕЛЬНО HTTPS - Скопировать Client ID и Client Secret
Переменные окружения:
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret
3. VK OAuth
- Перейти в VK Developers
- Создать приложение → Веб-сайт
- Настройки → Redirect URI:
https://v3.dscrs.site/oauth/vk/callback⚠️ ОБЯЗАТЕЛЬНО HTTPS - Скопировать ID приложения и Защищённый ключ
Переменные окружения:
VK_CLIENT_ID=your_vk_app_id
VK_CLIENT_SECRET=your_vk_secure_key
4. Facebook OAuth
- Перейти в Facebook Developers
- My Apps → Create App → Consumer
- Facebook Login → Settings
- Valid OAuth Redirect URIs:
https://v3.dscrs.site/oauth/facebook/callback⚠️ ОБЯЗАТЕЛЬНО HTTPS - Скопировать App ID и App Secret
Переменные окружения:
FACEBOOK_CLIENT_ID=your_facebook_app_id
FACEBOOK_CLIENT_SECRET=your_facebook_app_secret
5. Yandex OAuth
- Перейти в Yandex OAuth
- Создать новое приложение
- Callback URI:
https://v3.dscrs.site/oauth/yandex/callback⚠️ ОБЯЗАТЕЛЬНО HTTPS - Права:
login:info,login:email,login:avatar - Скопировать ID и Пароль
Переменные окружения:
YANDEX_CLIENT_ID=your_yandex_client_id
YANDEX_CLIENT_SECRET=your_yandex_client_secret
🚀 Развертывание
Локальная разработка
# .env файл
GOOGLE_CLIENT_ID=...
GOOGLE_CLIENT_SECRET=...
GITHUB_CLIENT_ID=...
GITHUB_CLIENT_SECRET=...
# и т.д.
Продакшн (Dokku/Heroku)
# Установка переменных окружения
dokku config:set myapp GOOGLE_CLIENT_ID=xxx GOOGLE_CLIENT_SECRET=yyy
# или
heroku config:set GOOGLE_CLIENT_ID=xxx GOOGLE_CLIENT_SECRET=yyy
✅ Проверка настройки
- Перезапустить приложение
- Проверить логи:
OAuth provider google: id=SET, key=SET - Тестовый вход:
https://v3.dscrs.site/oauth/google
🔍 Диагностика проблем
Ошибка "Provider not configured":
- Проверить переменные окружения
- Убедиться что значения не пустые
- Перезапустить приложение
Ошибка redirect_uri_mismatch:
- Проверить точное соответствие URL в настройках провайдера
- Убедиться что протокол (http/https) совпадает
- ВАЖНО: Callback URL должен указывать на backend (
v3.dscrs.site), НЕ на frontend (testing.discours.io)
Ошибка "redirect_uri is not associated with this application":
- Callback URL в настройках провайдера должен быть
https://v3.dscrs.site/oauth/{provider}/callback - ОБЯЗАТЕЛЬНО HTTPS (не HTTP) для продакшна
- НЕ указывать frontend URL в настройках провайдера
- Проверить что URL в настройках GitHub точно совпадает с тем что отправляет код
VK ошибка "Code challenge method is unsupported":
- Это нормально, VK не поддерживает PKCE
- Система автоматически обрабатывает это
📞 Поддержка
При проблемах проверить:
- Логи приложения при запуске
- Настройки redirect URI у провайдера
- Корректность переменных окружения