Files
core/docs/oauth-setup.md
Untone d19e753e96
All checks were successful
Deploy on push / deploy (push) Successful in 8m38s
oauth-redirect-fix
2025-09-24 08:18:44 +03:00

5.5 KiB
Raw Blame History

🔐 Настройка OAuth Провайдеров

🎯 Архитектура OAuth

Важно понимать разделение:

  • Frontend: testing.discours.io - где пользователь нажимает кнопку входа
  • Backend: v3.dscrs.site - где обрабатывается OAuth логика
  • Callback URL: Всегда должен указывать на backend (v3.dscrs.site)

🔄 OAuth Flow (пошагово):

  1. Пользователь на testing.discours.io нажимает "Войти через GitHub"
  2. Фронтенд редиректит на v3.dscrs.site/oauth/github
  3. Backend редиректит на github.com с callback_uri=v3.dscrs.site/oauth/github/callback
  4. GitHub после авторизации редиректит на v3.dscrs.site/oauth/github/callback
  5. Backend обрабатывает callback и редиректит обратно на testing.discours.io

🎯 Быстрая настройка

1. Google OAuth

  1. Перейти в Google Cloud Console
  2. Создать проект или выбрать существующий
  3. APIs & ServicesCredentialsCreate CredentialsOAuth 2.0 Client ID
  4. Application type: Web application
  5. Authorized redirect URIs:
    • https://v3.dscrs.site/oauth/google/callback
    • http://localhost:3000/oauth/google/callback (для разработки)
  6. Скопировать Client ID и Client Secret

Переменные окружения:

GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret

2. GitHub OAuth

  1. Перейти в GitHub Developer Settings
  2. New OAuth App
  3. Authorization callback URL: https://v3.dscrs.site/oauth/github/callback
  4. Скопировать Client ID и Client Secret

Переменные окружения:

GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret

3. VK OAuth

  1. Перейти в VK Developers
  2. Создать приложениеВеб-сайт
  3. НастройкиRedirect URI: https://v3.dscrs.site/oauth/vk/callback
  4. Скопировать ID приложения и Защищённый ключ

Переменные окружения:

VK_CLIENT_ID=your_vk_app_id
VK_CLIENT_SECRET=your_vk_secure_key

4. Facebook OAuth

  1. Перейти в Facebook Developers
  2. My AppsCreate AppConsumer
  3. Facebook LoginSettings
  4. Valid OAuth Redirect URIs: https://v3.dscrs.site/oauth/facebook/callback
  5. Скопировать App ID и App Secret

Переменные окружения:

FACEBOOK_CLIENT_ID=your_facebook_app_id
FACEBOOK_CLIENT_SECRET=your_facebook_app_secret

5. Yandex OAuth

  1. Перейти в Yandex OAuth
  2. Создать новое приложение
  3. Callback URI: https://v3.dscrs.site/oauth/yandex/callback
  4. Права: login:info, login:email, login:avatar
  5. Скопировать 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

Проверка настройки

  1. Перезапустить приложение
  2. Проверить логи: OAuth provider google: id=SET, key=SET
  3. Тестовый вход: 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
  • Система автоматически обрабатывает это

📞 Поддержка

При проблемах проверить:

  1. Логи приложения при запуске
  2. Настройки redirect URI у провайдера
  3. Корректность переменных окружения