google admin sdk如何使用Java更新用户的externalId
我正在尝试根据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被填充,并且没有抛出错误。当我尝试获取相同的用户时,没有外部ID的痕迹
当我使用Google APIs explorer并在那里填充ExternalId时,我得到了相同的行为。看起来Google API正在接受更新请求,但忽略了ExternalId。向用户添加外部ID的正确方法是什么
编辑:
SGC的回答帮助了我。SetExternalId方法需要一个ExternalId列表,我忘了这么做。Google Java目录API在获取ExternalID时似乎返回一个json对象,因此有必要对其进行解析以读取它
# 1 楼答案
当更新用户的外部id时,如果JSON设置不正确,它将不会被保存(尽管它给出了200个响应)。如果您试图向该用户发送get请求,则在响应中看不到更新的值
尝试使用“Oauth Play ground”发送请求,您可以在发送请求时构建JSON
我尝试在“Users.update”请求中使用{“externalIds”:[{“value”:“shaggynetwork”,“type”:“network”}]}。在“Users.get”中,回答是:
]
步骤:
点击https://developers.google.com/oauthplayground/
三,。在第2步中,点击“交换代币代码”
五,。点击“输入请求正文”,构建json:
{“externalIds”:[{“value”:“shaggynetwork”,“type”:“network”}]}
六,。点击“发送请求”
在文档中,不清楚如何更新外部id
如果你需要帮助,请告诉我