Google 目录 API Python ETL

Google Directory API Python ETL

我正在尝试为 Google Workspace 构建目录同步 ETL,但我从代码片段中收到 403。

from google.oauth2 import service_account
from googleapiclient.discovery import build

SCOPES = ['https://www.googleapis.com/auth/admin.directory.user.readonly']
SERVICE_ACCOUNT_FILE = './credentials.json' #TODO: these creds need to be passed in more safely.

credentials = service_account.Credentials.from_service_account_file(
        SERVICE_ACCOUNT_FILE, scopes=SCOPES)

service = build('admin', 'directory_v1', credentials=credentials)

results = service.users().list(domain='mydomain.com').execute()
users = results.get('users', [])

服务帐户已被授予对所列范围的全域委派,应该能够访问 API。其他类似的帖子提到域管理员必须批准该请求,但在我需要每周多次 运行 且没有任何管理员干预的情况下,这没有意义。

使用用户 API 需要 用户管理管理员 角色(或等效的自定义角色)。你可以grant this role to a service account,那么你根本不需要域范围的委托。