Autenticando a API do Google com uma conta de serviço com a API Java
Estou tentando usar a API oauth para autenticar uma conta de serviço do Google por meio da API Java. Espero usá-lo para acessar o Google Bigquery. Recebo uma "concessão inválida" retornada das minhas solicitações de API.
Aqui está o código, que é uma cópia de um exemplo de autenticação básica (que não era para o Bigquery, mas para outra API do Google):
/** Global instance of the HTTP transport. */
private static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
/** Global instance of the JSON factory. */
private static final JsonFactory JSON_FACTORY = new JacksonFactory();
private static Bigquery bigquery;
public ServiceAccountExample() {
try {
try {
GoogleCredential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountScopes(BigqueryScopes.BIGQUERY)
.setServiceAccountPrivateKeyFromP12File(new File("GoogleBigQuery-privatekey.p12"))
//.setRefreshListeners(refreshListeners)
//.setServiceAccountUser("email.com")
.build();
credential.refreshToken();
bigquery = new Bigquery.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
//.setApplicationName("GoogleBigQuery/1.0")
.build();
listDatasets(bigquery, "publicdata");
return;
} catch (IOException e) {
System.err.println(e.getMessage());
}
} catch (Throwable t) {
t.printStackTrace();
}
}
SERVICE_ACCOUNT_EMAIL é o endereço de e-mail do formulário: [email protected]
Se eu remover a linha credential.refreshToken (), ela falhará nas listasDatasets na primeira chamada para Bigquery ... Caso contrário, falhará em credential.refreshToken () .. com o mesmo erro.
O BigQuery não aceita autenticação da conta de serviço?
Acredito que fiz tudo corretamente por meio do Console de APIs. Eu tenho:
Ativou o acesso à Big Query API.Criei uma conta de serviço na guia "Acesso à API".Baixei minha chave privada (que é referenciada pelo código acima).Dado o usuário da minha conta de serviço "pode editar" o acesso na guia "Equipes".Faturamento ativado.Eu perdi alguma coisa? Há mais alguma coisa que eu precise fazer?
Obrigado..