Google: почта, календарь, диск и Search Console
Подключение через OAuth. Поддерживаются семь сервисов, у каждого свой набор прав. Что подключается и с какими правами Сервис Права Что даёт gmail gmail.modify , gmail.compose читать, помечать, раскладывать по ярлыкам,…
Подключение через OAuth. Поддерживаются семь сервисов, у каждого свой набор прав.
Что подключается и с какими правами
| Сервис | Права | Что даёт |
|---|---|---|
gmail |
gmail.modify, gmail.compose |
читать, помечать, раскладывать по ярлыкам, создавать черновики и отправлять |
calendar |
calendar |
полный доступ к календарю |
drive |
drive |
полный доступ к Диску |
docs |
documents |
полный доступ к Документам |
sheets |
spreadsheets |
полный доступ к Таблицам |
youtube |
youtube.readonly, youtube.force-ssl |
чтение канала и управление контентом |
searchconsole |
webmasters.readonly |
чтение данных Search Console |
Ко всем добавляется userinfo.email — по нему подпись, чей аккаунт подключён.
Порядок настройки
1. Проект в Google Cloud Console
- Открыть console.cloud.google.com, создать проект или взять существующий.
- Включить нужные API — «APIs & Services» → «Enable APIs and Services»: Gmail API, Google Calendar API, Google Drive API, Google Docs API, Google Sheets API, YouTube Data API v3, Search Console API — каждый отдельно, только те, что нужны.
- «APIs & Services» → «Credentials» → «Create credentials» → OAuth client ID → тип Web application.
2. Redirect URI — здесь ломается чаще всего
В созданном клиенте, в разделе Authorized redirect URIs, добавить адрес, куда Google вернёт пользователя после согласия. Он зависит от того, как вы работаете:
| Как работаете | Что добавлять |
|---|---|
| Веб-интерфейс (обычный случай) | https://<адрес вашего сервера>/api/oauth/callback |
| Настольное приложение | http://localhost:<порт>/callback |
⚠️ Адрес должен совпадать посимвольно — протокол, домен, путь. Расхождение даёт
redirect_uri_mismatch, и никакие повторные попытки не помогают.
⚠️ Не переиспользуйте OAuth-клиент, созданный под другой сервис. Клиент, заведённый когда-то под сторонний инструмент, содержит только его callback — ваш он отклонит. Проще завести новый клиент, чем разбираться в чужом.
3. Экран согласия и тестовые пользователи
«OAuth consent screen»:
- Тип External, если аккаунт обычный (не Workspace).
- Пока приложение не прошло проверку Google, оно в статусе Testing, и войти могут только аккаунты из списка Test users. Добавьте туда почту, которой будете подключаться, иначе на экране согласия будет отказ.
- Проверка Google нужна только для публичных приложений. Для внутреннего использования достаточно режима Testing.
4. Подключение источника
- Создать источник нужного сервиса, указать
clientIdиclientSecretиз шага 1. - Запустить авторизацию (
source_google_oauth_trigger) — откроется экран согласия Google. - Подтвердить доступ тем аккаунтом, который добавлен в Test users.
Запрос уходит с access_type=offline и prompt=consent — это нужно, чтобы Google выдал
refresh token. Без него доступ протухнет через час и не восстановится сам.
Частые ошибки
| Симптом | Причина | Что делать |
|---|---|---|
redirect_uri_mismatch |
адрес в клиенте не совпадает с фактическим | сверить посимвольно, добавить нужный в Authorized redirect URIs |
| Экран согласия отказывает | аккаунта нет в Test users | добавить почту в Test users |
403 SERVICE_DISABLED |
нужный API не включён в проекте | включить конкретный API в «Enable APIs and Services» |
| Работает Search Console, но не Gmail | токен выдан под другой набор прав | пройти авторизацию заново для нужного сервиса — права не докидываются задним числом |
| Доступ отваливается через час | не выдан refresh token | пройти согласие заново; убедиться, что это не «повторный вход» без запроса согласия |
| Всё настроено, но письма не читаются | подключён не тот аккаунт | проверить, чья почта в userinfo.email |
Почта без OAuth
Если нужен только доступ к личной почте и возиться с Google Cloud не хочется — подключайте по IMAP/SMTP с паролем приложения: 16 символов, создаётся в настройках безопасности Google Account. Требует включённой двухфакторной аутентификации. Обычный пароль от аккаунта для IMAP не подойдёт.
Вариант проще, но и возможностей меньше: ярлыки, черновики и отправка от имени работают не так гибко, как через Gmail API.
Проверка после настройки
- Запросить у источника список последних писем / ближайших событий / файлов — должно вернуться без ошибок авторизации.
- Убедиться, что подключён нужный аккаунт.
- Через час повторить запрос — если доступ жив, refresh token на месте.
Нужен такой агент в вашей компании?
Устанавливаем под ключ: настройка на компьютерах сотрудников, единый аккаунт, интеграция с 1С и внутренними системами, обучение команды. Подробнее о внедрении →