> ## 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

# Добавьте вход через 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, а мобильный вход проходит через тот же веб-бэкенд — отдельный клиент для каждой платформы или функции не создаётся.

[Запустите веб-приложение за 5 минут](https://supastack.dev/ru/docs/web/ship-in-5-minutes.md)

[Настройте базу данных](https://supastack.dev/ru/docs/web/setup-database.md)


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

1. Откройте [console.cloud.google.com](https://console.cloud.google.com) и войдите своим аккаунтом Google.

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

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

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


## Настройка экрана согласия OAuth

1. В левой навигации откройте APIs & Services → OAuth consent screen и нажмите Get started.

2. Введите App name, которое увидят пользователи (название вашего продукта), выберите User support email, выберите External для аудитории, заполните контактный email разработчика и дойдите до Create.

3. Больше на этом экране ничего не нужно: приложение запрашивает только стандартные скоупы `openid`, `email` и `profile`, которые не требуют дополнительных скоупов или верификации.

Статус публикации остаётся Testing, пока вы разрабатываете. В этом режиме входить могут только перечисленные аккаунты, поэтому добавьте собственный Gmail-адрес в Audience → Test users — иначе Google заблокирует даже вас. Когда продукт выйдет в онлайн, нажмите Publish app; поскольку чувствительные скоупы не запрашиваются, публикация не запускает проверку Google.


## Создание 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-сервер. Если запуск падает с именем переменной, флаг включён без полной пары клиента.

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

[Обзор OAuth-провайдеров](https://supastack.dev/ru/docs/web/setup-oauth.md)


Чтобы продолжить настройку, прочитайте [Добавьте вход через GitHub](https://supastack.dev/ru/docs/web/github-sign-in.md).


## Вперёд

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