调用Reports API时出错:
<HttpError 403 when requesting https://www.googleapis.com/admin/reports/v1/usage/users/all/dates/2013-08-01?alt=json&maxResults=1 returned "Caller does not have access to the customers reporting data.">
以前有人见过这个错误吗?我错过了什么?我只是不明白为什么会出现这种情况,也不明白我应该检查什么。
谨致问候。
编辑:
Auth:
credentials = SignedJwtAssertionCredentials(
service_account_name='5163XXXXX@developer.gserviceaccount.com',
private_key=oauth2_private_key,
scope='https://www.googleapis.com/auth/admin.reports.usage.readonly')
# https://developers.google.com/api-client-library/python/guide/thread_safety
http = credentials.authorize(httplib2.Http())
service = apiclient.discovery.build('admin', 'reports_v1', http=http)
实际呼叫:
result = service.userUsageReport().get(
userKey='all',
date='2013-08-01',
maxResults=1).execute()
其他API只适用于该服务帐户。'https://www.googleapis.com/auth/admin.reports.usage.readonly'已正确添加到OAuth2域配置页。
尝试:
credentials = SignedJwtAssertionCredentials(
service_account_name='5163XXXXX@developer.gserviceaccount.com',
private_key=oauth2_private_key,
scope='https://www.googleapis.com/auth/admin.reports.usage.readonly',
sub='super-admin@yourdomain.com')
在将服务帐户与Admin SDK一起使用时,您仍然需要代表Google Apps实例中的管理员行事。
此外,请确保服务帐户客户端ID已被授予使用Google应用程序控制面板中的Reports API范围的权限。Google Drive文档很好地描述了这个过程,只是在报告范围中进行了细分。