如何使用 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
我正在使用服务帐户模型和 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