← Все инструкции

Google: вход на сайте через аккаунт Google

Шпаргалка: что настроить в Google Cloud, чтобы кнопка «Войти через Google» работала на сайте, и что делать при смене домена. Значения в примерах взяты из Place, в новом проекте подставь свои (таблица в самом конце). Соседние инструкции: Google-сервисы, Meta, TikTok.

Как всё связано

Кнопка на сайте
→
Окно входа Google
→
Токен credential
→
Наш сервер проверяет токен
→
Сессия пользователя

Google показывает окно входа только на тех доменах, которые указаны в настройках клиента. Если домена там нет, пользователь увидит «Доступ заблокирован» ещё до того, как запрос дойдёт до нашего сервера. Поэтому эта ошибка чинится в Google Cloud, а не в коде.

Вход в мобильном приложении от домена не зависит. Там работают клиенты iOS и Android, их при смене домена не трогаем.

Кто есть кто

Google Cloud Consoleconsole.cloud.google.com: проекты, клиенты OAuth, экран согласия.
ПроектКонтейнер настроек. У него есть имя, Project ID и Project number.
OAuth Client IDИдентификатор клиента. Начинается с номера проекта, его можно не скрывать.
Client secretСекрет сервера. Его нельзя публиковать и присылать на скриншотах.
JavaScript originАдрес сайта: протокол и домен, без пути и / в конце.
Authorized domainsДомены из настроек экрана согласия: основной домен без https://.

Чек-лист

Шаги по порядку. Галочки сохраняются только в этом браузере.

Настройка
Когда это нужно. Запуск нового сайта, смена домена, появление поддомена или ошибка origin_mismatch.

Так выглядит ошибка, если домен не добавлен:

Google: ошибка 400 origin_mismatch

1Почта и проект

Зачем: проекты видны только аккаунтам, у которых есть к ним доступ. Пустой список значит, что вход выполнен не той почтой.
  1. Открой console.cloud.google.com.
  2. Вверху справа нажми на аватар и выбери почту.
  3. Вверху слева открой выбор проекта, вкладка All.
  4. Найди проект по номеру. Номер это цифры в начале Client ID: 728122372039-...

Правильный проект показывает тот же номер на главной странице. Предложение Free Trial для этой настройки не нужно.

Google Cloud: главная страница проекта с Project number и Project ID

2Какой клиент использует сайт

Зачем: в проекте может быть несколько клиентов. Домен нужно добавить именно в тот, что указан у сайта.
  1. Открой APIs & Services → Credentials.
  2. Посмотри значение GOOGLE_CLIENT_ID в client/.env.
  3. Найди в разделе OAuth 2.0 Client IDs клиент типа Web application с таким ID.
Google Cloud: список клиентов OAuth
КлиентДля чегоМенять?
ProductionСайт и сервер Placeда
Web client 1, iOS client 1, Android client 1Мобильное приложениенет
aiPairДругой продукт в этом же проектенет

3Authorized JavaScript origins

Зачем: это главный шаг. Он разрешает открывать окно входа Google с нашего сайта.
  1. Нажми на имя клиента.
  2. В Authorized JavaScript origins нажми Add URI.
  3. Вставь адрес сайта:
    https://pllace.cc
  4. Если сайт открывается и через www, добавь https://www.pllace.cc отдельной строкой.
  5. Нажми Save внизу страницы.
Только протокол и домен: без / в конце и без пути. Старый домен удаляй, когда вход на новом уже работает.

Authorized redirect URIs для этой кнопки не нужны: сайт использует всплывающее окно Google. Адрес там понадобится, только если в проекте есть вход с переадресацией по коду.

4Authorized domains

Зачем: Google показывает пользователю, какому сайту он даёт доступ, и домен должен быть указан в настройках.
  1. Слева открой OAuth consent screen (в новом интерфейсе Google Auth Platform → Branding).
  2. В Authorized domains нажми Add domain.
  3. Введи домен без https://:
    pllace.cc
  4. Сохрани. Если Google попросит подтвердить владение доменом, сделай это в Search Console.

5Настройки проекта

Зачем: сервер принимает токен только от известных ему клиентов. Если сайт и сервер настроены на разные клиенты, окно Google откроется, но войти не получится.
ФайлЗначение
client/.envGOOGLE_CLIENT_ID: ID веб-клиента, DOMAIN: адрес сайта
server/.envGOOGLE_CLIENT_ID: тот же ID, CLIENT_URL: адрес сайта
server/.env (если нужно)GOOGLE_EXTRA_CLIENT_IDS: дополнительные клиенты через запятую

Сайт может брать значения из удалённого конфига config.webbro.org, при смене домена проверь и его. После правки client/.env сайт нужно пересобрать и загрузить заново:

cd client
npm run build

6Проверка

Зачем: окно инкогнито исключает старые сессии и кэш браузера.
  1. Подожди 5–10 минут: Google может применять изменения дольше, до нескольких часов.
  2. Открой сайт в окне инкогнито и нажми «Войти через Google».
  3. Выбери аккаунт. После входа должен открыться сайт с твоим профилем.

Значения для нового проекта

ЧтоPlaceГде взять в новом
Project number728122372039Главная страница проекта
Project IDpllace-399520Главная страница проекта
Веб-клиентProduction, 728122372039-op7l...Credentials
Сайтhttps://pllace.ccАдрес сайта

Если что-то не работает

СимптомЧто делать
origin_mismatchДомена нет в Authorized JavaScript origins нужного клиента, либо адрес указан неточно
redirect_uri_mismatchСайт использует вход с переадресацией: добавить точный адрес в Authorized redirect URIs
Домен добавлен, ошибка осталасьПодождать, проверить в окне инкогнито и убедиться, что правился клиент с ID сайта
Проекта нет в спискеВойти другой почтой или попросить доступ у владельца проекта
Окно Google прошло, но вход не выполненПроверить, что GOOGLE_CLIENT_ID сайта и сервера совпадают, или добавить ID в GOOGLE_EXTRA_CLIENT_IDS
На сайте после сборки ключи вместо текстаЭто не связано с Google: проверить, что загружено всё содержимое client/dist