如何使用服务帐户验证`com.google.cloud.bigquery.BigQuery`

时间:2016-11-07 14:51:37

标签: java google-cloud-platform google-api-java-client

我想使用这个库

com.google.cloud.bigquery.BigQuery

如例:

https://cloud.google.com/bigquery/create-simple-app-api

但是,我想使用服务帐户验证BigQuery客户端。

我该怎么做?

我只看到默认凭据方式。

  BigQuery bigquery =
                new BigQueryOptions.DefaultBigqueryFactory().create(BigQueryOptions.defaultInstance());

2 个答案:

答案 0 :(得分:5)

在构建服务时尝试使用setCredentials和ServiceAccountCredentials.fromStream。

BigQuery bigquery = BigQueryOptions.newBuilder()
    .setCredentials(
       ServiceAccountCredentials.fromStream(
         new FileInputStream("your_json_service_keyfile.json"))
    )
    .build().getService()

这应该在Google的API文档中更好地记录。

希望它有所帮助,这是我在stackoverflow上的第一个答案: - )

答案 1 :(得分:0)

请注意,根据Issue #3535,单独使用setCredentials可能无法正确设置项目ID(“缺少项目ID”错误),因此应使用setProjectId进行显式设置。 / p>

例如

   ServiceAccountCredentials credentials;
   File credentialsPath = new File("/pathToJSONfile/SOME_NAME.json");

   try (FileInputStream serviceAccountStream = new FileInputStream(credentialsPath)) {
      credentials = ServiceAccountCredentials.fromStream(serviceAccountStream);
   }

   BigQuery bigquery = BigQueryOptions.newBuilder()
         .setCredentials(credentials)
         .setProjectId(credentials.getProjectId())
         .build().getService();