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 オブジェクトを返すようなので、それを解析して読み取る必要があります。