如何使用 Java 更新用户的 externalId
How to update a user's externalId using Java
我正在尝试根据 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目录API在获取externalIds时似乎return一个json对象,所以需要解析它才能读取。
当更新用户的外部ID时,如果JSON设置不正确,它不会被保存(尽管它给出了200响应)。如果您尝试向该用户发送获取请求,则在响应中看不到更新后的值。
尝试使用“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步中,在"Authorize APIs"左边空白处输入https://www.googleapis.com/auth/admin.directory.user,然后点击"Authorize APIs"。
3.In第2步,点击"exchange code for tokens"
- 第3步,select HTTP method:PUT,给请求URI值:https://www.googleapis.com/admin/directory/v1/users/userKey(giver userkey值)。
5.click 在 "enter request body" 上构建 json:
{"externalIds":[{"value":"shaggynetwork","type":"network"}]}
6.CLICK "send request"。
在文档中,不清楚如何更新外部 ID。
如果您需要任何帮助,请告诉我。
我正在尝试根据 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目录API在获取externalIds时似乎return一个json对象,所以需要解析它才能读取。
当更新用户的外部ID时,如果JSON设置不正确,它不会被保存(尽管它给出了200响应)。如果您尝试向该用户发送获取请求,则在响应中看不到更新后的值。
尝试使用“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步中,在"Authorize APIs"左边空白处输入https://www.googleapis.com/auth/admin.directory.user,然后点击"Authorize APIs"。
3.In第2步,点击"exchange code for tokens"
- 第3步,select HTTP method:PUT,给请求URI值:https://www.googleapis.com/admin/directory/v1/users/userKey(giver userkey值)。
5.click 在 "enter request body" 上构建 json:
{"externalIds":[{"value":"shaggynetwork","type":"network"}]}
6.CLICK "send request"。
在文档中,不清楚如何更新外部 ID。
如果您需要任何帮助,请告诉我。