-1
Есть ли образец Java для доступа к службе BigQuery с помощью учетной записи службы приложения? Я не хочу использовать поток OAuth.BigQuery с учетной записью службы - Java
Есть ли образец Java для доступа к службе BigQuery с помощью учетной записи службы приложения? Я не хочу использовать поток OAuth.BigQuery с учетной записью службы - Java
Один лайнер, чтобы получить учетные данные учетной записи службы:
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.jackson.JacksonFactory;
import java.io.File;
import java.util.Arrays;
credential = new GoogleCredential.Builder().setTransport(TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(SERVICE_ACCOUNT)
.setServiceAccountScopes(Arrays.asList(new String[] {SCOPE}))
.setServiceAccountPrivateKeyFromP12File(new File(P12_KEY))
.build();
Где:
SERVICE_ACCOUNT = "[email protected]"
P12_KEY = "path/to/private_key.p12"
TRANSPORT = new NetHttpTransport();
SCOPE = "https://www.googleapis.com/auth/bigquery"
JSON_FACTORY = new JacksonFactory()
После того, как у вас есть учетные данные, вы можете создать службу BigQuery и использовать его как с любой другой аутентификации метод:
import com.google.api.services.bigquery.Bigquery;
bigquery = new Bigquery.Builder(
TRANSPORT, JSON_FACTORY, credential).setApplicationName(
"BQ-ServAcc/so/0.1").setHttpRequestInitializer(credential).build();
Например, чтобы проверить работу:
import com.google.api.services.bigquery.model.Job;
while (true) {
Job job = bigquery.jobs().get(projectId, jobId).execute();
System.out.println(job.getStatus().toPrettyString());
if (job.getStatus().getState().equals("DONE")) {
if (job.getStatus().getErrorResult() != null)
System.out.println(job.getStatus().getErrorResult().toPrettyString());
System.out.println(job.getStatistics().toPrettyString());
break;
}
Thread.sleep(1000);
}