我们有一个google公司帐户,并且已经在使用来管理我们域中的组。我们现在需要通过“组设置api”来调整组设置。在管理组时,我们的java代码在我们的域中充当所有的特殊管理用户。
( 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)现在怎么办?我如何使用这个版本的v1-rev25-1.14.2-测试版的google服务-组设置API和“google客户端”版本1.14.1-beta?我在任何示例中看到的唯一选项(只适用于OAuth2.0)是使用这个GoogleCredential对象,它仅以OAuth2.0为中心,根据上面的(a),我们不能使用该对象。
( e)没有给出在这个库中使用API密钥的示例或有用的信息,我决定尝试使用一个示例来通过OAuth2.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();
当上面的代码执行时,(修补程序()调用)我得到了这个错误:(我还尝试了相同的结果"update()“。这个信息是什么意思??这和奥斯丁有关吗?还是更新/修补程序中的某个无效调用?
{
"code" : 400,
"errors" : [ {
"domain" : "global",
"message" : "Permission denied: Cannot hide from Groups directory.",
"reason" : "invalid"
} ],
还请注意:您的“帮助”页面声明"Google工程师监视和回答标签google-groups设置“。在这里发布帮助时,但是堆栈溢出要求我们有XXXXX点才能使用它!太好了,所以没人会看到这个。
发布于 2013-05-08 10:06:48
https://stackoverflow.com/questions/16446883
复制