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,那么你根本不需要域范围的委托。
我正在尝试为 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,那么你根本不需要域范围的委托。