Como atualizar o externalId de um usuário usando Java
Estou tentando atualizar um usuário com um ID externo, com base na documentação do SDK do administrador do Google.
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);
}
Ao registrar a resposta na chamada de atualização, vejo que externalId é preenchido e nenhum erro é gerado. Quando tento obter o mesmo usuário, não há rastreamento do externalId.
Quando eu uso o Google 'Explorador de APIs e preencha o ExternalId lá eu recebo o mesmo comportamento. Parece que a API do Google está aceitando a solicitação de atualização, mas está ignorando o ExternalId. Qual é a maneira correta de adicionar um externalId a um usuário?
editar:
A resposta da SGC me ajudou. O método setExternalIds espera uma lista de ExternalIds, esqueci de fazer isso. A API do Google Java Directory parece retornar um objeto json ao buscar externalIds, portanto, é necessário analisá-lo para lê-lo.