我们有一个 google 公司帐户,并且已经在使用 Groups Provisioning API 来管理我们域中的组。我们现在需要通过“组设置 api”调整组设置。我们的 java 代码在我们的域中充当所有 Group Provisioning API 的特殊管理员用户,因为它管理组。
a)我正在阅读https://developers.google.com/google-apps/groups-settings/auth
b) “如果您的应用程序有某些不寻常的授权要求,......或域范围的授权 (2LO),那么您目前不能使用 OAuth 2.0 令牌。在这种情况下,您必须改用 OAuth 1.0 令牌和 API钥匙。”
c)我阅读:https ://developers.google.com/console/help/#generatingdevkeys并为此应用程序生成了一个新的服务器密钥
d) 现在呢?如何将它与 google-api-services-groupssettings API 的 v1-rev25-1.14.2-beta 版本和“google-api-client”版本 1.14.1-beta 一起使用?我在任何示例中看到的唯一选项(仅适用于 oauth 2.0 请注意)是使用此 GoogleCredential 对象,该对象仅以 oauth 2.0 为中心,根据上面的(a),我们不能使用。
e) 鉴于没有关于在此库中使用 API 密钥的示例或有用信息,我决定尝试使用通过 oauth 2.0 和我们的特殊服务帐户 clientEmail 和 privatekey 之一创建 Groupsettings 对象的示例来尝试使用它。在某些方面,我不确定为什么这不起作用,因为组不是“用户数据”,但似乎它们应该能够由我正在连接的这个管理员 api 帐户管理。
HttpTransport httpTransport = new NetHttpTransport();
JacksonFactory jsonFactory = new JacksonFactory();
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId("ourspecial_client_email@from.api.console")
.setServiceAccountScopes(GroupssettingsScopes.APPS_GROUPS_SETTINGS)
.setServiceAccountUser("my.special.admin.user@ourdomain.com")
.setServiceAccountPrivateKeyFromP12File(
new java.io.File("/path/to/privatekey"))
.build();
Groupssettings service = new Groupssettings.Builder(httpTransport, jsonFactory, null)
.setApplicationName("my API Integration")
.setHttpRequestInitializer(credential).build();
Groups groups= service.groups().get("someexistingtestgroup@mydomain.com").execute();
Groups group = new Groups();
group.setWhoCanJoin("ALL_IN_DOMAIN_CAN_JOIN");
service.groups().patch("someexistingtestgroup@mydomain.com", group).execute();
当上面的代码执行时,(patch()调用)我得到这个错误:(我也试过“update()”同样的结果。这条消息是什么意思??这与身份验证有关吗?还是这是一些无效的调用在更新/补丁中?
{
"code" : 400,
"errors" : [ {
"domain" : "global",
"message" : "Permission denied: Cannot hide from Groups directory.",
"reason" : "invalid"
} ],
另附注:您的“帮助”页面显示“ Google 工程师监控并回答标签 google-groups-settings”。在这里发帖寻求帮助时,但是stackoverflow要求我们有XXXXX点才能使用它!太好了,所以没有人会看到这个。