我想使用这个库
com.google.cloud.bigquery.BigQuery
如例:
https://cloud.google.com/bigquery/create-simple-app-api
但是,我想使用服务帐户验证BigQuery
客户端。
我该怎么做?
我只看到默认凭据方式。
BigQuery bigquery =
new BigQueryOptions.DefaultBigqueryFactory().create(BigQueryOptions.defaultInstance());
答案 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();