Как обновить externalId пользователя с помощью Java

Я пытаюсь обновить пользователя с помощью 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 при извлечении внешних идентификаторов, поэтому его необходимо проанализировать, чтобы прочитать.


person Torje    schedule 09.01.2015    source источник


Ответы (1)


При обновлении внешнего идентификатора пользователя, если JSON настроен неправильно, он не будет сохранен (хотя он дает ответ 200). Если вы попытаетесь отправить запрос на получение этого пользователя, обновленное значение не будет отображаться в ответе.

Попробуйте отправить запрос с помощью "Игровая площадка Oauth", где вы можете создать свой JSON при отправке запроса.

Я попытался использовать {"externalIds":[{"value":"shaggynetwork","type":"network"}]} в запросе "Users.update". А в "Users.get" ответ такой:

HTTP/1.1 200 OK
Content-type: application/json; charset=UTF-8
{
  "externalIds": [
   {
     "type": "network", 
      "value": "shaggynetwork"
}

],

Шаги:

  1. Нажмите https://developers.google.com/oauthplayground/.

  2. На шаге 1 в левой части «Авторизация API» в пустом поле укажите https://www.googleapis.com/auth/admin.directory.user, а затем нажмите "Авторизовать API".

3.На шаге 2 нажмите на "обменять код на токены"

  1. На шаге 3 выберите метод HTTP:PUT, укажите значение URI запроса:https://www.googleapis.com/admin/directory/v1/users/userKey(giver значение ключа пользователя).

5.нажмите «ввести тело запроса», соберите json:

{"externalIds":[{"значение":"мохнатая сеть","тип":"сеть"}]}

6. НАЖМИТЕ на «отправить запрос».

В документации неясно, как обновить внешний идентификатор.

Дайте мне знать, если вам нужна помощь в этом.

person SGC    schedule 09.01.2015
comment
Спасибо, ваш ответ мне помог! Я отредактировал свой вопрос с правильным решением Java. - person Torje; 14.01.2015