我正在尝试使用基于Google Admin SDK文档的externalId更新用户。
UserExternalId externalId = new UserExternalId();
externalId.setType( "account" );
externalId.setValue( "test" );
User user = new User();
user.setExternalIds( externalId );
try {
User update = directory.users().update( "USERKEY", user ).execute().setExternalIds( externalId );
LOGGER.info("Response from google: " + update.toPrettyString());
User full = directory.users().get( "USERKEY" ).setProjection( "full" ).execute();
LOGGER.info( "Response from new get user: " + full.toPrettyString() );
} catch (IOException e) {
LOGGER.info("Error: " + e);
}
在更新调用上记录响应时,我可以看到externalId已填入并且不会引发任何错误。当我尝试获得相同的用户时,没有externalId的痕迹。
当我使用Google“APIs explorer并填写ExternalId时,我会得到相同的行为。看起来Google API正在接受更新请求,但忽略了ExternalId。将externalId添加到用户的正确方法是什么?
编辑:
SGC的回答帮助了我。 setExternalIds方法需要一个ExternalIds列表,我忘了这样做。 Google Java Directory API似乎在获取externalIds时返回一个json对象,因此需要对其进行解析才能读取它。
答案 0 :(得分:1)
更新用户的外部ID时,如果未正确设置JSON,则不会保存(尽管它会给出200响应)。如果您尝试向此用户发送get请求,则在响应中看不到更新的值。
尝试使用“Oauth Play ground”发送请求,您可以在发送请求时构建JSON。
我尝试在“Users.update”请求中使用{“externalIds”:[{“value”:“shaggynetwork”,“type”:“network”}]}。在“Users.get”中,响应是:
HTTP/1.1 200 OK
Content-type: application/json; charset=UTF-8
{
"externalIds": [
{
"type": "network",
"value": "shaggynetwork"
}
],
步骤:
在步骤1中,在空白的“授权API”左侧给出https://www.googleapis.com/auth/admin.directory.user,然后单击“授权API”。
3.在第2步中,点击“代码兑换代码”
5.点击“输入请求体”,构建json:
{ “外部ID”:[{ “值”: “shaggynetwork”, “类型”: “网络”}]}
6.点击“发送请求”。
在文档中,不清楚如何更新外部ID。
如果您需要任何帮助,请与我联系。