有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    当更新用户的外部id时,如果JSON设置不正确,它将不会被保存(尽管它给出了200个响应)。如果您试图向该用户发送get请求,则在响应中看不到更新的值

    尝试使用“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. 点击https://developers.google.com/oauthplayground/

    2. < L> > P>在步骤1中,在空白给出{A3}中的“授权API”的左侧,然后单击“授权API”。p>

    三,。在第2步中,点击“交换代币代码”

    1. 在步骤3中,选择HTTP方法:PUT,给出请求URI值:https://www.googleapis.com/admin/directory/v1/users/userKey(giveruserkey值)

    五,。点击“输入请求正文”,构建json:

    {“externalIds”:[{“value”:“shaggynetwork”,“type”:“network”}]}

    六,。点击“发送请求”

    在文档中,不清楚如何更新外部id

    如果你需要帮助,请告诉我