Autenticación de la API de Google con una cuenta de servicio con la API de Java

Estoy intentando usar una API de auth para autenticar una cuenta de servicio de Google a través de la API de Java. Espero usarlo para acceder a Google Bigquery. Obtengo una "concesión no válida" devuelta de mis solicitudes de API.

Aquí está el código, que es una copia de un ejemplo de autenticación básica (que no fue para Bigquery ... sino otra API de 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 es la dirección de correo electrónico del formulario: [email protected]

Si elimino la línea credential.refreshToken (), fallará en los listsDatasets en la primera llamada a Bigquery ... De lo contrario, fallará en credential.refreshToken () .. con el mismo error.

¿BigQuery no acepta la autenticación de la cuenta de servicio?

Creo que he hecho todo correctamente a través de la API Console. Yo tengo:

Se activó el acceso a la API de Big Query.Creé una cuenta de servicio en la pestaña "Acceso API".Descargué mi clave privada (que se menciona en el código anterior).Dado el acceso de "usuario puede editar" a mi cuenta de servicio en la pestaña "Equipos".Facturación habilitada.

¿Me he perdido algo? ¿Hay algo más que deba hacer?

Gracias..

Respuestas a la pregunta(2)

Su respuesta a la pregunta