在不使用域管理员用户的情况下调用 Google 服务帐户
Making calls to Google service account without using domain admin user
我正在尝试使用目录 API 为我们域中的用户更新 Google 密码。我遵循了 Plus 服务帐户的示例,它几乎相同 (https://github.com/google/google-api-java-client-samples/blob/master/plus-serviceaccount-cmdline-sample/src/main/java/com/google/api/services/samples/plus/serviceaccount/cmdline/PlusServiceAccountSample.java)。
我正在尝试确定为什么我需要将超级管理员用户的电子邮件地址传递给 setServiceAccountUser() 以便在域上设置用户密码。是否有某个设置可以让我在不设置 serviceAccountUser 的情况下使用 API?
我在注释掉 setServiceAccountUser() 调用时收到以下消息:
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Not Authorized to access this resource/api",
"reason" : "forbidden"
} ],
"message" : "Not Authorized to access this resource/api"
这是相关的代码(来自 Plus 示例):
// service account credential (uncomment setServiceAccountUser for domain-wide delegation)
GoogleCredential credential = new GoogleCredential.Builder().setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountScopes(Collections.singleton(PlusScopes.PLUS_ME))
.setServiceAccountPrivateKeyFromP12File(new File("key.p12"))
// .setServiceAccountUser("user@example.com")
.build();
目录API 写入操作需要管理员帐户。超级管理员或 delegated admin who has rights to perform API user modifications. This is listed in the prerequisites 文档。
我正在尝试使用目录 API 为我们域中的用户更新 Google 密码。我遵循了 Plus 服务帐户的示例,它几乎相同 (https://github.com/google/google-api-java-client-samples/blob/master/plus-serviceaccount-cmdline-sample/src/main/java/com/google/api/services/samples/plus/serviceaccount/cmdline/PlusServiceAccountSample.java)。
我正在尝试确定为什么我需要将超级管理员用户的电子邮件地址传递给 setServiceAccountUser() 以便在域上设置用户密码。是否有某个设置可以让我在不设置 serviceAccountUser 的情况下使用 API?
我在注释掉 setServiceAccountUser() 调用时收到以下消息:
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Not Authorized to access this resource/api",
"reason" : "forbidden"
} ],
"message" : "Not Authorized to access this resource/api"
这是相关的代码(来自 Plus 示例):
// service account credential (uncomment setServiceAccountUser for domain-wide delegation)
GoogleCredential credential = new GoogleCredential.Builder().setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountScopes(Collections.singleton(PlusScopes.PLUS_ME))
.setServiceAccountPrivateKeyFromP12File(new File("key.p12"))
// .setServiceAccountUser("user@example.com")
.build();
目录API 写入操作需要管理员帐户。超级管理员或 delegated admin who has rights to perform API user modifications. This is listed in the prerequisites 文档。