OAuth Интеграция

Обзор

Интеграция с OAuth-провайдерами позволяет пользователям легко входить в ваше приложение, используя существующие учетные записи GitHub, Google и других сервисов. Данный проект поддерживает аутентификацию с использованием различных OAuth-провайдеров.

Настройка OAuth требует создания приложений в соответствующих платформах и получения идентификаторов для интеграции их с вашим проектом.

GitHub OAuth

Создание OAuth приложения GitHub

  1. Перейдите на страницу GitHub Developer Settings
  2. Нажмите на кнопку "New OAuth App" (или выберите существующее приложение для редактирования)
  3. Заполните форму регистрации:
    • Название приложения: DevShip (или любое другое название по вашему выбору)
    • Домашняя страница: URL вашего приложения (например, http://localhost:3000 для локальной разработки)
    • Описание приложения: Краткое описание вашего приложения
    • URL обратного вызова (Callback URL): http://localhost:8000/api/v1/auth/github/callback для локальной разработки, или ваш домен и путь для продакшена
  4. Нажмите "Register Application"
  5. После создания вы получите Client ID и сможете сгенерировать Client Secret
  6. Скопируйте эти значения и добавьте их в файл конфигурации вашего приложения или в переменные окружения:
    GITHUB_CLIENT_ID=ваш_client_id
    GITHUB_CLIENT_SECRET=ваш_client_secret
    GITHUB_REDIRECT_URI=http://localhost:8000/api/v1/auth/github/callback

Важные замечания:

  • Убедитесь, что Callback URL точно соответствует URI, настроенному в вашем приложении
  • Храните Client Secret в безопасности и не включайте его в публичный код
  • В продакшен-среде рекомендуется использовать HTTPS для всех URL-адресов

Google OAuth

Создание проекта Google OAuth

  1. Перейдите в Google Cloud Console
  2. Создайте новый проект или выберите существующий
  3. В боковом меню выберите "APIs & Services" → "Credentials"
  4. Нажмите "Create Credentials" и выберите "OAuth client ID"
  5. Если это ваш первый раз, вам нужно настроить экран согласия OAuth:
    • Выберите тип "External" (или "Internal", если вы используете Google Workspace)
    • Заполните обязательные поля: имя приложения, email поддержки, домен вашего приложения
    • Добавьте области доступа, которые вам нужны (как минимум, email и profile)
    • Заполните информацию о разработчике и сохраните
  6. Вернитесь к созданию OAuth client ID:
    • Тип приложения: Web application
    • Название: DevShip Web Client (или любое другое название)
    • Authorized JavaScript origins: http://localhost:3000 (для локальной разработки)
    • Authorized redirect URIs: http://localhost:8000/api/v1/auth/google/callback
  7. Нажмите "Create"
  8. Вы получите Client ID и Client Secret
  9. Добавьте эти значения в файл конфигурации вашего приложения или в переменные окружения:
    GOOGLE_CLIENT_ID=ваш_client_id
    GOOGLE_CLIENT_SECRET=ваш_client_secret
    GOOGLE_REDIRECT_URI=http://localhost:8000/api/v1/auth/google/callback

Важные замечания:

  • Для рабочего приложения вам нужно пройти верификацию приложения Google, если вы используете тип "External"
  • Убедитесь, что включили нужные API в разделе "Library" (например, Google People API для профиля)
  • В продакшен-среде добавьте ваш настоящий домен в authorized origins и redirect URIs
  • Для приложений без верификации максимальное количество пользователей ограничено 100

Использование в приложении

После настройки OAuth-провайдеров, вы можете использовать полученные учетные данные для интеграции с вашим приложением. В бэкенде проекта уже реализованы маршруты для аутентификации через GitHub и Google.

Настройка в бэкенде

Добавьте полученные учетные данные в конфигурационный файл бэкенда или в переменные окружения:

# Файл .env в корне бэкенда

# GitHub OAuth
GITHUB_CLIENT_ID=ваш_github_client_id
GITHUB_CLIENT_SECRET=ваш_github_client_secret
GITHUB_REDIRECT_URI=http://localhost:8000/api/v1/auth/github/callback

# Google OAuth
GOOGLE_CLIENT_ID=ваш_google_client_id
GOOGLE_CLIENT_SECRET=ваш_google_client_secret
GOOGLE_REDIRECT_URI=http://localhost:8000/api/v1/auth/google/callback