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

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/google-sign-in.md (or send Accept: text/markdown).

Добавьте вход через Google

Создайте бесплатный OAuth-клиент Google Cloud и подключите Continue with Google к приложению.

Задать вопрос об этом руководстве
Открыть в

Прохождение для начинающих

Предварительные условия: веб-приложение работает локально (Запуск за 5 минут) и мигрированная база данных для реальных аккаунтов (Настройка базы данных). Нужен обычный аккаунт Google; всё здесь бесплатно и занимает около 10 минут.

Кратко о терминах: OAuth — это стандарт, при котором Google выполняет вход пользователя на странице Google и передаёт вашему приложению подтверждение. Проект Google Cloud — это контейнер в консоли Google, хранящий креденшелы вашего приложения. Экран согласия OAuth — страница, которую Google показывает пользователям перед возвратом. Client ID идентифицирует ваше приложение для Google; client secret — его пароль и остаётся на сервере.

1. Создайте проект Google Cloud. 2. Настройте экран согласия. 3. Создайте один Web OAuth-клиент и скопируйте его ID и секрет. 4. Вставьте три значения в apps/web/.env.local и перезапустите dev-сервер.

Одного проекта достаточно для всего продукта: тот же проект Google Cloud позже будет хостить ваше развёртывание Cloud Run, а мобильный вход проходит через тот же веб-бэкенд — отдельный клиент для каждой платформы или функции не создаётся.

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

1. Откройте console.cloud.google.com и войдите своим аккаунтом Google.

2. Нажмите выпадающий список проектов в верхней панели (рядом с логотипом Google Cloud) и выберите New Project.

3. Дайте ему имя — название продукта подойдёт — и нажмите Create. Организация, карта или платёжный аккаунт для креденшелов входа не нужны.

Ожидается: консоль перезагрузится в новый проект, и его имя появится в верхней панели. Переиспользуйте этот проект, когда дойдёте до руководства по развёртыванию, вместо создания ещё одного.

Создание OAuth-клиента

1. Откройте APIs & Services → Credentials → + Create Credentials → OAuth client ID.

2. Установите Application type в Web application и назовите примерно supastack local.

3. В Authorized JavaScript origins добавьте http://localhost:3000. В Authorized redirect URIs добавьте http://localhost:3000/api/auth/callback/google — этот путь колбэка принадлежит Better Auth, стандартному движку аутентификации комплекта: {APP_URL}/api/auth/callback/google.

4. Нажмите Create и скопируйте Client ID и Client Secret из диалога. Их можно открыть заново на странице клиента позже, но копирование сейчас экономит шаг.

Для продакшена создайте второй Web-клиент (рекомендуется) или добавьте к этому: JavaScript-ориджин https://yourdomain.com и redirect URI https://yourdomain.com/api/auth/callback/google. Отдельные клиенты для каждого окружения означают, что утечка локального секрета не может достичь продакшена.

Добавьте значения в приложение

Откройте apps/web/.env.local — Next.js читает этот файл, а не корневой .env — и задайте три строки ниже. AUTH_GOOGLE_ENABLED=true включает кнопку; пара клиента идентифицирует ваш клиент Google Cloud.

Client secret — только для сервера: он никогда не должен появляться в переменных NEXT_PUBLIC_ или EXPO_PUBLIC_ и никогда не коммититься в Git. В продакшене задайте те же три имени в хранилище секретов вашего хоста вместо env-файла.

Перезапустите dev-сервер после редактирования — изменения окружения читаются только при запуске.

# apps/web/.env.local
AUTH_GOOGLE_ENABLED=true
GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=your-client-secret

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

Откройте http://localhost:3000/auth, нажмите кнопку Google, пройдите экран согласия Google и убедитесь, что приложение возвращается с выполненным входом.

redirect_uri_mismatch означает, что зарегистрированный в Google redirect URI не совпадает точно — проверьте протокол (http или https), порт и путь: он должен заканчиваться на /api/auth/callback/google, а не /callback/google/ или вариант с завершающим слешем.

Access blocked / has not completed the Google verification process означает, что экран согласия всё ещё в Testing, а входящий аккаунт не указан в Test users — добавьте его в разделе Audience.

Если кнопка Google отсутствует или вход по-прежнему не работает после редактирования .env.local, перезапустите dev-сервер. Если запуск падает с именем переменной, флаг включён без полной пары клиента.

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

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
Тема