如何使用服务帐户访问组成员?

时间:2015-06-10 17:56:57

标签: google-admin-sdk service-accounts google-groups admin-sdk

我正在尝试使用服务帐户访问组的成员。我已经验证我可以代表用户使用普通OAuth2令牌执行此操作,并调用https://www.googleapis.com/admin/directory/v1/groups/{group}/members和范围https://www.googleapis.com/auth/admin.directory.group.readonly

我想对服务帐户执行相同操作,并且我已将服务帐户电子邮件地址添加为组成员,并验证查看成员权限设置为“所有成员group,所有组织成员“。

当我要求提供成员列表时,我收到此错误:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "forbidden",
    "message": "Not Authorized to access this resource/api"
   }
  ],
  "code": 403,
  "message": "Not Authorized to access this resource/api"
 }
}

如需授权此服务帐户查看该群组,我需要做什么?

2 个答案:

答案 0 :(得分:0)

您可以按照以下API文档页面中列出的步骤创建服务帐户并执行域范围的授权,请注意,您需要作为该组成员的任何用户的电子邮件地址(<在下面的代码段中强> userEmail ,以便服务帐户可以代表他们行事:

https://developers.google.com/admin-sdk/directory/v1/guides/delegation

该页面包含有关如何使用在Google Developers Console上创建的服务帐户和私钥实例化com.google.api.services.admin.directory.Directory对象的Java和Python示例

 GoogleCredential credential = new GoogleCredential.Builder()
  .setTransport(httpTransport)
  .setJsonFactory(jsonFactory)
  .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
  .setServiceAccountScopes(DirectoryScopes.ADMIN_DIRECTORY_USERS)
  .setServiceAccountUser(userEmail)
  .setServiceAccountPrivateKeyFromP12File(
      new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))
  .build();

答案 1 :(得分:0)

假设您具有以下条件

admin email id

此答案的真相来自here