Я пытаюсь обновить пользователя с помощью externalId на основе документации Google Admin SDK.
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 заполнен, и ошибок не возникает. Когда я пытаюсь получить того же пользователя, внешний идентификатор не обнаруживается.
Когда я использую Google, обозреватель API и заполните ExternalId там, я получаю такое же поведение. Похоже, API Google принимает запрос на обновление, но игнорирует ExternalId. Как правильно добавить externalId пользователю?
редактировать:
Ответ SGC помог мне. Метод setExternalIds ожидает список ExternalIds, я забыл это сделать. Google Java Directory API, по-видимому, возвращает объект json при извлечении внешних идентификаторов, поэтому его необходимо проанализировать, чтобы прочитать.