Google OAuth часто выглядит запутанно, особенно когда авторизация уже настроена, а приложению внезапно требуется какой-то «ключ Google». На практике здесь обычно используются два связанных значения:
- Client ID — идентификатор OAuth-приложения.
- Client Secret — секрет приложения.
В этой статье разберём, где их найти в Google Cloud Console и как отличить один от другого.
1. Что такое Google OAuth
OAuth 2.0 — это механизм авторизации, который позволяет приложению использовать учетную запись Google пользователя без передачи приложению его пароля.
Например, пользователь нажимает:
Sign in with Google
После этого Google выполняет авторизацию и сообщает вашему приложению, какой пользователь прошёл проверку.
Типичная схема выглядит так:
Пользователь
│
│ "Войти через Google"
▼
Ваше приложение
│
│ OAuth
▼
Google
│
│ Авторизация пользователя
▼
Ваше приложение
Чтобы Google понимал, какое именно приложение выполняет запрос, создаётся OAuth Client.
2. Client ID
При создании OAuth Client Google выдаёт ему уникальный идентификатор.
Он обычно выглядит примерно так:
741761730064-kr7ef8ikf4rf5fh1nt1htlvlqjgb0m7r.apps.googleusercontent.com
Именно такая строка была найдена в нашем примере.
Это:
Google OAuth Client ID
Как распознать Client ID
Обычно Client ID:
- содержит
.apps.googleusercontent.com; - является длинной строкой;
- не является секретом;
- используется для идентификации OAuth-приложения.
Например:
GOOGLE_CLIENT_ID=
741761730064-kr7ef8ikf4rf5fh1nt1htlvlqjgb0m7r.apps.googleusercontent.com
Client ID можно указывать в конфигурации фронтенда и в некоторых случаях он виден пользователю. Сам по себе Client ID не даёт доступа к аккаунту Google.
3. Client Secret
Второе важное значение — Client Secret.
Он используется приложением при OAuth-взаимодействии с Google и должен рассматриваться как секретная информация.
Выглядеть он может примерно так:
GOCSPX-xxxxxxxxxxxxxxxxxxxxxxxx
В отличие от Client ID, Client Secret не следует публиковать в:
- GitHub;
- JavaScript-коде браузера;
- публичных конфигурационных файлах;
- статьях;
- скриншотах;
- Docker image, если секрет можно получить из него;
- открытых
.env-файлах.
Правильный вариант:
GOOGLE_CLIENT_ID=741761730064-....apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-....
При этом .env обычно добавляют в .gitignore.
4. Где найти Google OAuth Client
Для управления OAuth-учётными данными используется Google Cloud Console.
Обычно путь выглядит так:
Google Cloud Console
↓
APIs & Services
↓
Credentials
↓
OAuth 2.0 Client IDs
В разделе OAuth 2.0 Client IDs находятся созданные OAuth-клиенты.
Например:
OAuth 2.0 Client IDs
My Web Application
Client ID:
741761730064-kr7ef8ikf4rf5fh1nt1htlvlqjgb0m7r.apps.googleusercontent.com
Если открыть нужный OAuth Client, можно посмотреть его настройки.
5. Как найти Client Secret
Откройте:
Google Cloud Console
→ APIs & Services
→ Credentials
Затем найдите нужный OAuth 2.0 Client ID.
Открыв его настройки, можно увидеть информацию о клиенте.
Если Google предоставляет возможность скачать конфигурацию, можно использовать Download JSON.
В JSON-файле для веб-приложения структура может выглядеть примерно так:
{
"web": {
"client_id": "741761730064-....apps.googleusercontent.com",
"client_secret": "GOCSPX-....",
"redirect_uris": [
"https://example.com/oauth/callback"
]
}
}
Таким образом, из одного файла можно получить:
client_id
client_secret
redirect_uris
6. Client ID и Client Secret — это не API Key
Это очень важное различие.
В Google используются разные виды credentials.
OAuth Client
Используется для:
Авторизация пользователя
↓
Sign in with Google
Основные значения:
Client ID
Client Secret
API Key
Используется для доступа к некоторым Google API:
Приложение
↓
API Key
↓
Google API
API Key и OAuth Client — не одно и то же.
Поэтому если документация вашего приложения говорит:
GOOGLE_CLIENT_ID
GOOGLE_CLIENT_SECRET
вам нужен именно OAuth Client, а не обычный API Key.
7. Что выбрать при создании OAuth Client
Google предлагает разные типы OAuth-клиентов.
Например:
Web application
Desktop app
Android
iOS
TVs and Limited Input devices
Для обычного веб-сайта или веб-приложения обычно используется:
Web application
В его настройках особенно важен раздел:
Authorized redirect URIs
Например:
https://example.com/oauth/callback
Именно на этот адрес Google возвращает пользователя после успешной авторизации.
8. Redirect URI
Одна из самых распространённых проблем с Google OAuth — неправильный redirect_uri.
Предположим, приложение отправляет пользователя на Google:
https://accounts.google.com/...
После авторизации Google должен вернуть пользователя обратно в приложение.
Например:
https://example.com/auth/google/callback
Этот адрес должен быть разрешён в настройках OAuth Client.
Если приложение использует:
https://example.com/auth/google/callback
а в Google Cloud Console указан:
https://example.com/oauth/callback
авторизация может завершиться ошибкой.
Поэтому redirect_uri должен совпадать с зарегистрированным URI.
9. Как это выглядит в приложении
В приложении обычно присутствуют настройки вроде:
GOOGLE_CLIENT_ID
GOOGLE_CLIENT_SECRET
GOOGLE_REDIRECT_URI
Например:
GOOGLE_CLIENT_ID=741761730064-....apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-....
GOOGLE_REDIRECT_URI=https://example.com/auth/google/callback
Здесь:
| Параметр | Назначение |
|---|---|
GOOGLE_CLIENT_ID | Идентифицирует OAuth-приложение |
GOOGLE_CLIENT_SECRET | Секрет OAuth-приложения |
GOOGLE_REDIRECT_URI | Адрес возврата пользователя после авторизации |
10. Можно ли публиковать Client ID?
Да, Client ID сам по себе не является секретом.
Например, эта строка:
741761730064-kr7ef8ikf4rf5fh1nt1htlvlqjgb0m7r.apps.googleusercontent.com
является Client ID.
Её наличие в HTML или JavaScript само по себе не означает компрометацию секрета.
Но это не означает, что остальные данные OAuth можно публиковать.
Особенно важно защищать:
Client Secret
11. Что делать, если Client Secret потерян
Если Client Secret больше невозможно найти, не стоит пытаться угадывать его.
Лучше открыть:
Google Cloud Console
→ APIs & Services
→ Credentials
и найти соответствующий OAuth Client.
Если старый секрет невозможно восстановить, можно создать новый OAuth Client или выполнить предусмотренную Google процедуру ротации credentials.
После этого секрет необходимо заменить в приложении.
12. Важный момент при работе с Cloudflare
Google OAuth может использоваться не только непосредственно вашим приложением.
Например:
Пользователь
↓
Cloudflare Access
↓
Google
↓
Авторизация
В таком случае Google OAuth Client может быть настроен в Cloudflare Zero Trust.
Это отличается от OAuth, который непосредственно реализован внутри вашего Python/Node.js/другого приложения.
Поэтому прежде чем искать ключ, нужно определить:
Кто именно использует Google OAuth — ваше приложение или Cloudflare?
Если авторизация настроена в Cloudflare Access, credentials могут относиться именно к настройке Cloudflare.
Если авторизация реализована в коде приложения, нужно искать OAuth Client, который использует это приложение.
13. Как быстро определить, что именно у вас есть
Если у вас есть строка:
741761730064-kr7ef8ikf4rf5fh1nt1htlvlqjgb0m7r.apps.googleusercontent.com
то практически наверняка это:
Client ID
Если приложение дополнительно требует:
GOOGLE_CLIENT_SECRET
то одной этой строки недостаточно.
Нужно найти ещё:
Client Secret
И в итоге конфигурация будет выглядеть примерно так:
GOOGLE_CLIENT_ID=741761730064-kr7ef8ikf4rf5fh1nt1htlvlqjgb0m7r.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-XXXXXXXXXXXXXXXX
14. Главное, что нужно запомнить
У Google OAuth есть два ключевых понятия:
Client ID
↓
Кто я?
Client Secret
↓
Секрет, подтверждающий OAuth-клиента
В нашем случае:
741761730064-kr7ef8ikf4rf5fh1nt1htlvlqjgb0m7r.apps.googleusercontent.com
— это Client ID, а не секретный ключ.
Для полноценной OAuth-конфигурации может потребоваться ещё Client Secret.
И самое главное правило безопасности:
Client ID можно показывать, Client Secret — нельзя публиковать.
Если секрет уже случайно попал в GitHub, чат, статью или другой публичный источник, безопаснее считать его скомпрометированным и выполнить его замену/ротацию.