> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# Настройка входа через OAuth

Google, Apple, GitHub, Microsoft и Twitter — по флагу и паре клиентских ключей на каждого.

## Создайте и подтвердите реальный аккаунт

Аутентификация означает подтверждение того, кто использует приложение. Запустите Postgres и сначала запустите миграцию, используя руководство по базе данных, а затем оставьте веб-сервер включенным. Откройте http://localhost:3000/auth,, выберите адрес электронной почты/пароль для регистрации, введите свое имя, адрес электронной почты и пароль и отправьте заявку. Сохраните EMAIL_PROVIDER=local для первого теста.

Когда поток запрашивает код электронной почты, откройте http://localhost:3000/mail-preview в другой вкладке браузера, найдите самое последнее сообщение для этого адреса и скопируйте его код обратно в форму входа. Запросите новый код, если срок его действия истек. Эти сообщения остаются в локальной папке исходящих; повторная проверка внешнего почтового ящика не приведет к их обнаружению. Выйдите из системы, затем войдите снова, чтобы убедиться, что учетная запись, поддерживаемая базой данных, работает.

Если при регистрации сообщается об ошибке подключения к базе данных или отсутствии таблицы, завершите настройку базы данных вместо включения входа через социальную сеть. Для кнопок Google, GitHub, Apple, X и Microsoft требуется собственное приложение поставщика и настройки обратного вызова; включайте его только после завершения руководства поставщика. Better Auth — это механизм, поставляемый по умолчанию, и ему не требуется платная учетная запись аутентификации для входа в локальную электронную почту.

[Запустите Postgres перед созданием учетной записи](https://supastack.dev/ru/docs/web/database.md)

[Использование кодов входа в электронную почту и устранение неполадок](https://supastack.dev/ru/docs/web/setup-ai.md)

[Настроить вход в Google](https://supastack.dev/ru/docs/web/setup-oauth.md)

[Добавьте вход через Google](https://supastack.dev/ru/docs/web/google-sign-in.md)

[Добавьте вход через GitHub](https://supastack.dev/ru/docs/web/github-sign-in.md)

[Добавьте вход через Apple](https://supastack.dev/ru/docs/web/apple-sign-in.md)


## Выбирайте включённые методы входа

Основа включает e-mail/пароль, OTP и настраиваемую социальную аутентификацию. Better Auth владеет идентичностью и сессиями, а приложение компонует конфигурацию провайдеров и транзакционную доставку OTP.

Включайте только тех социальных провайдеров, которых настроили. Клиентские секреты провайдеров и секрет аутентификации остаются на сервере.


## Свяжите идентичность с воркспейсом

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


## Проверяйте поведение сессии

Тестируйте вход, неверные или истёкшие OTP, одноразовое потребление, выход и отклонённый анонимный доступ. Тесты memory-адаптера покрывают семантику обработчиков; персистентность продакшен-базы и реальные колбэки провайдеров требуют отдельной приёмки.


## Настройка и конфигурация

1. Установите AUTH_SECRET минимум в 32 случайных символа — подойдёт openssl rand -hex 32.

2. В консоли разработчика каждого провайдера создайте OAuth-приложение и зарегистрируйте callback URL: {APP_URL}/api/auth/callback/<provider> под Better Auth (AUTH_PROVIDER по умолчанию). Используйте отдельные приложения для локальной среды и продакшена там, где провайдер разрешает только один callback — docs/github-auth-setup.md проводит поток GitHub от начала до конца.

3. Включите флаг провайдера и задайте его клиентскую пару — AUTH_GOOGLE_ENABLED плюс GOOGLE_CLIENT_ID и GOOGLE_CLIENT_SECRET и соответствующую тройку для Apple, GitHub, Microsoft или Twitter. Включение флага без креденшелов роняет запуск и называет недостающую переменную.

4. Microsoft — единственный callback, различающийся по движкам: /api/auth/callback/microsoft под Better Auth, /api/auth/callback/microsoft-entra-id под Auth.js.

```
AUTH_SECRET=<at-least-32-random-characters>
AUTH_PASSKEY_ENABLED=true
EARLY_ACCESS_INVITE_ONLY=false

AUTH_GOOGLE_ENABLED=true
GOOGLE_CLIENT_ID=…
GOOGLE_CLIENT_SECRET=…

AUTH_GITHUB_ENABLED=true
GITHUB_CLIENT_ID=…
GITHUB_CLIENT_SECRET=…

# AUTH_APPLE_ENABLED / AUTH_MICROSOFT_ENABLED / AUTH_TWITTER_ENABLED
# follow the same pattern:
# MICROSOFT_CLIENT_ID=…  MICROSOFT_CLIENT_SECRET=…
# TWITTER_CLIENT_ID=…    TWITTER_CLIENT_SECRET=…

# Workspace connected accounts (Settings → Connections):
# CONNECTED_X_CLIENT_ID=          CONNECTED_X_CLIENT_SECRET=
# CONNECTED_GOOGLE_CLIENT_ID=     CONNECTED_GOOGLE_CLIENT_SECRET=
# CONNECTED_MICROSOFT_CLIENT_ID=  CONNECTED_MICROSOFT_CLIENT_SECRET=

# Callbacks to register (Better Auth):
#   {APP_URL}/api/auth/callback/google
#   {APP_URL}/api/auth/callback/apple
#   {APP_URL}/api/auth/callback/github
#   {APP_URL}/api/auth/callback/twitter
#   {APP_URL}/api/auth/callback/microsoft   (Auth.js: microsoft-entra-id)
```


## Рабочий процесс внедрения

Внешние аккаунты воркспейса — другая поверхность: пары CONNECTED_X_*, CONNECTED_GOOGLE_* и CONNECTED_MICROSOFT_* питают Настройки → Подключения, а их колбэки живут под {APP_URL}/api/accounts/{x|google|microsoft}/callback. Пустой client id оставляет поток подключения провайдера выключенным — не переиспользуйте там креденшелы приложения для входа.

Клиентские секреты провайдеров остаются только на сервере, как и AUTH_SECRET, — никогда в переменных NEXT_PUBLIC_ или EXPO_PUBLIC_.

Вход работает? Переходите к «Настройка AI».


## Проверка и устранение неполадок

Протестируйте первый вход, возвращающуюся сессию, отменённый экран согласия и отключённого провайдера. Несовпадение callback — обычная причина сбоя: зарегистрированный URL должен точно совпадать с APP_URL и callback id движка, а приложению нужен перезапуск после изменений env.


Чтобы продолжить настройку, прочитайте [Настройка AI](https://supastack.dev/ru/docs/web/setup-ai.md).


## Вперёд

[Аутентификация](https://supastack.dev/ru/docs/modules/auth.md)
