For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /ru/docs/web/setup-oauth.md (or send Accept: text/markdown).
Настройка входа через 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 — это механизм, поставляемый по умолчанию, и ему не требуется платная учетная запись аутентификации для входа в локальную электронную почту.
Выбирайте включённые методы входа
Основа включает 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.