Перейти к содержимому
supastack
Обзор документации
WebNext.js

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.

Чтобы продолжить настройку, прочитайте Настройка AI.

Часто задаваемые вопросы

14 вопросов

Что такое supastack?

supastack — модульная основа для создания SaaS-продуктов с AI. Она объединяет общую инфраструктуру, чтобы вы могли сосредоточиться на продуктовых функциях.

Поддерживает ли он web и mobile?

Да. supastack включает приложения Next.js и Expo как отправные точки для web- и мобильных интерфейсов.

Какая аутентификация включена?

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

Как он поддерживает AI?

supastack включает настраиваемый мультипровайдерный AI, учёт использования, бюджеты и зашифрованную поддержку bring-your-own-key.

Как обрабатываются подписки?

Для продуктов на ките Stripe-биллинг, подписки и права доступа образуют основу платного доступа. Секреты провайдеров остаются только на сервере.

Где живёт мой продуктовый код?

Продуктовые функции остаются в отдельном коде, а продукт настраивает и интегрирует модули основы supastack.

Как устроены цены supastack?

Кит — разовая покупка с пожизненными обновлениями: один фреймворк за $249 (временная стартовая цена — скидка $100 от стандартной цены $349) или все фреймворки (Next.js, iOS, Android) за $499 (временная стартовая цена — скидка $100 от стандартной цены $599), плюс $75 за каждое дополнительное место разработчика. Без подписки на кит. Оплата на этом сайте доставляет лицензионный ключ по e-mail, доступ к репозиторию — через приглашение GitHub.

Как воркспейсы ограничивают мои данные?

Записи пользователей ограничены по workspaceId. Идентичность, права доступа, AI-использование, события биллинга и записи аудита остаются внутри границы личного воркспейса.

Как работают фоновые задачи?

Trigger.dev — явный рантайм задач. Контракт JobRunner обещает только enqueue, status и cancel — семантика workflow остаётся специфичной для Trigger.dev и явной.

Чем почта отличается от рассылок?

Транзакционная почта покрывает продуктовые сценарии вроде уведомлений о завершении. Холодные рассылки и кампании — забота продукта, вне почтового модуля этого кита.

Как работают покупки в мобильном приложении?

Мобильное приложение поддерживает нативные покупки и восстановление через RevenueCat, а сервер проверяет доступ. Настройте аккаунты магазинов и завершите тестирование на устройствах перед публикацией. Веб-оплата остается отдельной.

Где хранятся ключи AI-провайдеров?

Bring-your-own-key креденшелы зашифрованы и остаются только на сервере. Ключи удаляются из логов; использование и бюджеты видны на уровне воркспейса.

Какие способы оплаты принимает оформление заказа?

Оформление заказа на Stripe принимает карты, а после включения кошельков в аккаунте Stripe может также предлагать Alipay и WeChat Pay — удобно для покупателей из Китая. Авторизации кошельков подтверждаются асинхронно, поэтому страница лицензии обновляется, как только платёж завершается.

Могу ли я получить возврат средств?

После получения доступа к репозиторию supastack остается вашим навсегда, поэтому возврат средств невозможен. Но будьте уверены: вы получаете полный исходный код с пожизненными обновлениями для создания и запуска неограниченного числа продуктов для себя или клиентов. Вы лишь не можете перепродавать код или распространять репозиторий как стартовый набор или шаблон.

RU
Тема