如何在GroupsSettings-api中使用服务帐户OAuth 2.0流程

时间:2012-07-10 10:04:57

标签: java google-api google-api-java-client

page使用google-api-java-client,我们可以阅读一些流量。

服务帐户流程适用于日历api:

GoogleCredential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
                    .setJsonFactory(JSON_FACTORY)
                    .setServiceAccountId("[[]]")
                    .setServiceAccountScopes(CalendarScopes.CALENDAR)
                    .setServiceAccountPrivateKeyFromP12File(new File("key.p12")).build();

但我们总是:

503 Service Unavailable
{
  "code" : 503,
  "errors" : [ {
    "domain" : "global",
    "message" : "Backend Error",
    "reason" : "backendError"
  } ],
  "message" : "Backend Error"
}

如果我们使用GroupssettingsScopes.APPS_GROUPS_SETTINGS(此请求的api控制台授予访问权限)。

我们必须使用旧的2脚OAuth 1.0a附近的机制来管理GApps帐户的组。

非常感谢提前

1 个答案:

答案 0 :(得分:0)

使用群组设置API,您需要模拟Google Apps用户。该用户需要成为管理员。

此外,我个人注意到最好将服务帐户ID提供给setServiceAccountId()方法。

这对我有用:

GoogleCredential credential = new GoogleCredential.Builder().setTransport(new NetHttpTransport())
                .setJsonFactory(new GsonFactory())
                .setServiceAccountId("516444413363-4i0cvva2abc8a3t63bbq1a9rfqe42p70@developer.gserviceaccount.com")
                .setServiceAccountScopes(Collections.singletonList("https://www.googleapis.com/auth/apps.groups.settings"))
                .setServiceAccountUser("admin@my.doma.in")
                .setServiceAccountPrivateKeyFromP12File(new File("key.p12")).build();