Разделы документации
Google Drive: права доступа
Сервис-аккаунт и OAuth для Google Drive — полный список scope’ов, делегирование и типовые ошибки авторизации Google.
Два способа авторизации
- Сервис-аккаунт с делегированием (рекомендуется) — организация выдаёт сервис-аккаунту право действовать от имени пользователей домена. Позволяет индексировать общие диски и «Мои диски» всех сотрудников.
- OAuth от имени пользователя — коннектор видит то, что видит один конкретный пользователь. Подходит для точечных сценариев.
Полный список scope’ов
Для индексации и синхронизации прав Google Drive нужны:
https://www.googleapis.com/auth/drive.readonly
https://www.googleapis.com/auth/drive.metadata.readonly
https://www.googleapis.com/auth/admin.directory.group.readonly
https://www.googleapis.com/auth/admin.directory.user.readonly
Первые два — чтение файлов и метаданных; два admin.directory.* — чтение
пользователей и групп домена, без них не работает синхронизация прав и
перечисление «Моих дисков».
Настройка делегирования (domain-wide delegation)
- Откройте админ-консоль Workspace: Security → Access and data control → API controls → Domain-wide delegation → Add new.
- Укажите Client ID сервис-аккаунта (числовой, из консоли Google Cloud).
- В поле scope’ов вставьте все четыре строки списка выше — одной строкой, через запятую.
- Сохраните. Изменения применяются в течение нескольких минут.
В проекте Google Cloud должны быть включены Google Drive API и
Admin SDK API (иначе запросы вернут 403 accessNotConfigured).
Типовые ошибки
«client not authorized for any of the scopes requested»
Самая частая ошибка. Причины:
- делегирование не настроено или настроено для другого client ID — сверьте числовой Client ID сервис-аккаунта;
- список scope’ов в админ-консоли отличается от списка выше (важно точное совпадение каждой строки, без лишних пробелов);
- вы обновили Charo, а в новой версии расширился список scope’ов — добавьте недостающие строки в делегирование.
«403 accessNotConfigured»
В проекте Google Cloud не включён нужный API — включите Google Drive API и Admin SDK API.
«unauthorized_client»
Email основного администратора указан неверно (или у него нет прав администратора) — сервис-аккаунт имперсонирует именно эту учётную запись.
«invalid_grant»
Часы сервера Charo расходятся с реальным временем — проверьте NTP, либо JSON-ключ сервис-аккаунта отозван.
Проверка
После изменения прав нажмите повторную проверку учётных данных в карточке коннектора: Charo заново пройдёт авторизацию и сообщит, каких scope’ов не хватает.