Google BigQuery API PHP 凭证

2021-12-30 00:00:00 google-bigquery php

我想实现 Google BigQuery API,以便我可以从 BigQuery 中的 PHP 代码执行查询.

I want to implement Google BigQuery API so I can execute query from my PHP code in BigQuery.

首先我通过以下命令安装了客户端库:

First I have installed the client library by following command:

composer require google/cloud

其次,我通过以下命令安装了 Google Cloud SDK:

Second I have installed the Google Cloud SDK by following command:

curl https://sdk.cloud.google.com | bash

然后我运行这个命令来创建凭证:

Then I run this command to create the credential:

gcloud beta auth application-default login

所有过程都成功,运行凭据请求后,我收到以下消息:

All the process is success and after run credential request I get the following message:

Credentials saved to file: 

[/home/some/my/dir/application_default_credentials.json]

These credentials will be used by any library that requests
Application Default Credentials.

然后我想在 PHP 上运行这段代码:

Then I want to run this code on PHP:

# Includes the autoloader for libraries installed with composer
require __DIR__ . '/vendor/autoload.php';

# Imports the Google Cloud client library
use GoogleCloudBigQueryBigQueryClient;

# Your Google Cloud Platform project ID
$projectId = 'PROJECT ID';

# Instantiates a client
$bigquery = new BigQueryClient([
    'projectId' => $projectId
]);

# The name for the new dataset
$datasetName = 'my_new_dataset';

# Creates the new dataset
$dataset = $bigquery->createDataset($datasetName);

echo 'Dataset ' . $dataset->id() . ' created.';

但不幸的是我收到以下消息错误:

But unfortunately I got following message error:

Fatal error: Uncaught exception 'GoogleCloudExceptionServiceException' with message 'Could not load the default credentials

所以我的问题是:出了什么问题,我该怎么办?

So my question is: whats wrong and what must I do?

谢谢

推荐答案

默认凭据由 适用于 PHP 的 Google API 客户端库,版本 2.0.0 及更高版本.要使用它们,请调用 useApplicationDefaultCredentials:

Default credentials are provided by the Google APIs Client Library for PHP, versions 2.0.0 and newer. To use them, call useApplicationDefaultCredentials:

$client = new Google_Client();
$client->useApplicationDefaultCredentials();

然后,使用凭据访问 API 服务,如下所示:

Then, use the credentials to access an API service as follows:

$client->setScopes(['https://www.googleapis.com/auth/books']);
$service = new Google_Service_Books($client);
$results = $service->volumes->listVolumes('Henry David Thoreau');

我建议查看我提供的链接有更多选项,我们建议使用服务帐户.

I am suggesting checking out the link I gave it has much more options and we recommend using service accounts.

相关文章