如何使用 Google Admin SDK 添加用户别名 Java API

How To Add A User Alias Using Google Admin SDK Java API

我正在使用服务帐户模型和 Google 的 Admin SDK Java API 来检索和修改用户。

目标是为现有用户添加别名。

Alias newAlias = new Alias();
newAlias.setId(userID);
newAlias.setAlias(alias);

Directory.Users.Aliases.Insert request = directory.users().aliases().insert(userID, newAlias);
request.execute();

execute() 100% 失败并显示错误消息:

"Value set through a parameter is inconsistent with a value set in the request"

但当然没有找出问题参数或值,或提供建议。

我尝试了 newAlias 中的作用域(或非作用域)userID 和别名以及请求中的 userID 的所有 8 种组合,结果相同。对于所有 8 种组合,我的意思是:

newAlias.setId(userID);
newAlias.setAlias(alias);
insert(userID, newAlias);

newAlias.setId(userID@domain.com);
newAlias.setAlias(alias@domain.com);
insert(userID@domain.com, newAlias);

等等...

非常感谢任何想法。

我认为值得补充的是,虽然我相信上述方法是正确的(使用 Directory.Aliases.Insert)并且我遗漏了一些关键信息或犯了错误,但我还尝试通过以下方式添加别名更新用户对象而不是别名,如下所示:

List<String> aliases = new ArrayList<String>();
aliases.add(scopedAlias);  //userid@domain.com
User user = new User();
user = retrieveUser(uid);  //Gets current record from Google
user.setAliases(aliases);

Directory.Users.Update request
    = directory.users().update(uid, user);
request.execute();

那也没用。

有人有工作代码示例吗?

我使用以下方法插入了别名:

Alias alias = new Alias();
alias.setAlias(aliasString);
directory.users().aliases().insert(userId, alias).execute();

对于您的方法为何无效或我的方法为何有效,我没有任何见解,但您知道了。

小号。 McKinley 的建议奏效了。

关键区别:

我一直在调用:

alias.setId(userId);

alias.setId(scopedUserId);  //userId@domain

任何一个都导致了 "parameter is inconsistent with a value" 错误。将其保留并创建别名。

我能够找到 customerId 如下

转到admin.google.com 安全 -> 设置单点登录 (SSO) 您将看到这样的网址:

https://accounts.google.com/o/saml2/idp?idpid=Cxxxxxxxx

那个Cxxxxxxxx就是你的customerId