5.5 KiB
5.5 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/callbackhttp://localhost:3000/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 - Скопировать 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 - Скопировать 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 - Скопировать 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 - Права:
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 в настройках провайдера должен быть
v3.dscrs.site/oauth/{provider}/callback - НЕ указывать frontend URL в настройках провайдера
VK ошибка "Code challenge method is unsupported":
- Это нормально, VK не поддерживает PKCE
- Система автоматически обрабатывает это
📞 Поддержка
При проблемах проверить:
- Логи приложения при запуске
- Настройки redirect URI у провайдера
- Корректность переменных окружения