Аутентификация Google API с помощью служебной учетной записи с Java API
Я пытаюсь использовать oauth API для аутентификации учетной записи службы Google через API Java. Я надеюсь использовать его для доступа к Google Bigquery. Я получил «недействительный грант» вернулся из моих запросов API.
Вот код, который является копией базового примера аутентификации (который был не для Bigquery ... но другого 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 - это адрес электронной почты в форме: [email protected]
Если я удаляю строку credential.refreshToken (), она завершается с ошибкой в listsDatasets при первом вызове Bigquery ... В противном случае происходит сбой на credential.refreshToken () .. с той же ошибкой.
BigQuery не принимает аутентификацию учетной записи службы?
Я считаю, что все сделал правильно через консоль API. Я имею:
Turned access to the Big Query API on. Created a service account under the "API Access" tab. Downloaded my private key (which is referenced from the code above). Given my service account user "can edit" access under the "Teams" tab. Enabled Billing.Я что-то пропустил? Есть ли что-нибудь еще, что мне нужно сделать?
Спасибо..