我正在尝试根据 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 的API 资源管理器并在那里填写 ExternalId 时,我得到了相同的行为。看起来 Google API 正在接受更新请求,但忽略了 ExternalId。向用户添加 externalId 的正确方法是什么?
编辑:
SGC 的回答帮助了我。setExternalIds 方法需要一个 ExternalIds 列表,我忘了这样做。Google Java Directory API 在获取 externalIds 时似乎返回了一个 json 对象,因此需要对其进行解析才能读取它。