0

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);
    }

update 呼び出しの応答をログに記録すると、externalId が入力されており、エラーがスローされていないことがわかります。同じユーザーを取得しようとすると、externalId の痕跡がありません。

Google のAPI エクスプローラーを使用してそこに ExternalId を入力すると、同じ動作が得られます。Google API は更新リクエストを受け入れているようですが、ExternalId を無視しています。ユーザーに externalId を追加する正しい方法は何ですか?

編集:

SGCの答えは私を助けてくれました。setExternalIds メソッドは ExternalIds のリストを想定していますが、これを行うのを忘れていました。Google Java Directory API は、externalIds の取得時に json オブジェクトを返すようなので、それを解析して読み取る必要があります。

4

1 に答える 1

1

ユーザーの外部 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. https://developers.google.com/oauthplayground/をクリックします。

  2. ステップ 1 で、「Authorize APIs」の左側の空欄にhttps://www.googleapis.com/auth/admin.directory.userを指定し、「Authorize APIs」をクリックします。

3.ステップ2で、「トークンの交換コード」をクリックします

  1. ステップ 3 で、HTTP メソッド:PUT を選択し、リクエスト URI 値を指定します: https://www.googleapis.com/admin/directory/v1/users/userKey(giver userkey value)。

5.「リクエスト本文を入力」をクリックし、json をビルドします。

{"externalIds":[{"value":"shaggynetwork","type":"network"}]}

6.「リクエストを送信」をクリックします。

ドキュメントでは、外部 ID を更新する方法が明確ではありません。

これについて何か助けが必要な場合はお知らせください。

于 2015-01-09T18:28:07.763 に答える