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

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

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

准备工作

从文件中加载凭据

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

C#

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

使用 GoogleCredential.FromStream(Stream) 从 JSON 文件加载凭据。

创建 GoogleCredential 后,将其传递到 BigQueryClient.Create(String, GoogleCredential) 以创建 BigQuery 服务对象。

如需查看示例,请参阅为服务器到服务器的生产应用设置身份验证

Java

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

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

public static void explicit() throws IOException {
  // 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;
  File credentialsPath = new File("service_account.json");  // TODO: update to your key path.
  try (FileInputStream serviceAccountStream = new FileInputStream(credentialsPath)) {
    credentials = ServiceAccountCredentials.fromStream(serviceAccountStream);
  }

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

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

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,
)

后续步骤

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面