2013-06-28 3 views

ответ

2

Один лайнер, чтобы получить учетные данные учетной записи службы:

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); 
}