Uwierzytelnianie Google API za pomocą konta usługi z Java API

Próbuję użyć oauth API do uwierzytelnienia konta usługi Google za pomocą interfejsu API Java. Mam nadzieję, że użyję go do uzyskania dostępu do Google Bigquery. Otrzymuję „nieprawidłowe przyznanie” z moich żądań API.

Oto kod, który jest kopią podstawowego przykładu uwierzytelnienia (który nie był przeznaczony dla Bigquery .. ale innego API 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 to adres e-mail formularza: XXXXXXX@developer.gserviceaccount.com

Jeśli usuwam linię credential.refreshToken (), kończy się ona niepowodzeniem w listsDatasets przy pierwszym wywołaniu Bigquery ... W przeciwnym razie kończy się niepowodzeniem na credential.refreshToken () .. z tym samym błędem.

Czy BigQuery nie akceptuje uwierzytelniania konta usługi?

Wierzę, że zrobiłem wszystko poprawnie za pomocą konsoli API. Mam:

Włączono dostęp do interfejsu API Big Query.Utworzono konto usługi w zakładce „Dostęp do API”.Pobrano mój klucz prywatny (do którego odwołuje się powyższy kod).Biorąc pod uwagę moje konto użytkownika usługi „może edytować” dostęp w zakładce „Zespoły”.Włączone rozliczanie.

Czy coś przegapiłem? Czy muszę coś jeszcze zrobić?

Dzięki..