使用服务帐号密钥文件进行身份验证

在本地或其他公有云中部署应用时,如需使用 BigQuery,请手动创建并获取服务帐号凭据。您可以将环境变量设置为使用应用默认凭据来加载凭据,也可以通过手动在应用代码中指定路径来加载凭据。

本指南将为您介绍如何从文件中加载凭据。

准备工作

从文件加载凭据

在应用中基于服务帐号文件创建凭据,然后,使用凭据创建包含 BigQuery 客户端库的服务对象。

C#

在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 C# 设置说明进行操作。如需了解详情,请参阅 BigQuery C# API 参考文档

使用 GoogleCredential.FromStream(Stream) 从 JSON 文件加载凭据。 创建 GoogleCredential 后,将其传递到 BigQueryClient.Create(String, GoogleCredential) 以创建 BigQuery 服务对象。

var credentials = GoogleCredential.FromFile(jsonPath);
var client = BigQueryClient.Create(projectId, credentials);

Java

试用此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 BigQuery Java API 参考文档

使用 ServiceAccountCredentials.fromStream(InputStream),基于文件创建 ServiceAccountCredentials 对象。将凭据传递到 BigQueryOptions.Builder,然后基于其中的选项创建 BigQuery 服务。

public static void explicit() throws IOException {
  // TODO(developer): Replace these variables before running the sample.
  String projectId = "MY_PROJECT_ID";
  File credentialsPath = new File("path/to/your/service_account.json");

  // Load credentials from JSON key file. If you can't set the GOOGLE_APPLICATION_CREDENTIALS
  // environment variable, you can explicitly load the credentials file to construct the
  // credentials.
  GoogleCredentials credentials;
  try (FileInputStream serviceAccountStream = new FileInputStream(credentialsPath)) {
    credentials = ServiceAccountCredentials.fromStream(serviceAccountStream);
  }

  // Instantiate a client.
  BigQuery bigquery =
      BigQueryOptions.newBuilder()
          .setCredentials(credentials)
          .setProjectId(projectId)
          .build()
          .getService();

  // Use the client.
  System.out.println("Datasets:");
  for (Dataset dataset : bigquery.listDatasets().iterateAll()) {
    System.out.printf("%s%n", dataset.getDatasetId().getDataset());
  }
}

Node.js

在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 BigQuery Node.js API 参考文档

// Create a BigQuery client explicitly using service account credentials.
// by specifying the private key file.
const {BigQuery} = require('@google-cloud/bigquery');

const options = {
  keyFilename: 'path/to/service_account.json',
  projectId: 'my_project',
};

const bigquery = new BigQuery(options);

Python

在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Python 设置说明进行操作。如需了解详情,请参阅 BigQuery Python API 参考文档

使用 google.oauth2.service_account.Credentials.from_service_account_file,通过服务帐号密钥文件进行身份验证。使用凭据创建 BigQuery 客户端

from google.cloud import bigquery
from google.oauth2 import service_account

# TODO(developer): Set key_path to the path to the service account key
#                  file.
# key_path = "path/to/service_account.json"

credentials = service_account.Credentials.from_service_account_file(
    key_path, scopes=["https://www.googleapis.com/auth/cloud-platform"],
)

client = bigquery.Client(credentials=credentials, project=credentials.project_id,)

后续步骤