首页 > 解决方案 > GCP BigQuery PHP 客户端获取项目列表

问题描述

这是我当前的代码,它只带回一个项目。如何获取所有可访问项目的列表?

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

# Imports the Google Cloud client library
use Google\Cloud\BigQuery\BigQueryClient;

$client = new Google_Client();
$client->setAuthConfig(__DIR__ . '/../gcp-bigquery-key.json');
$scopes = implode(' ', [Google_Service_Bigquery::BIGQUERY]);

$client->setScopes($scopes);
$service = new Google_Service_Bigquery($client);

$tQ = $service->projects->listProjects();
print_r($tQ);

标签: phpgoogle-cloud-platformgoogle-bigquery

解决方案


我看到您正在使用 BigQuery 令牌作为授权。由于该密钥对 BigQuery 有效,因此您将获得包含该 BigQuery 的项目。

要查看所有项目,您可以查看文档[1]中的此代码:

require_once __DIR__ . '/vendor/autoload.php';

$client = new Google_Client();
$client->setApplicationName('Google-CloudResourceManagerSample/0.1');
$client->useApplicationDefaultCredentials();
$client->addScope('https://www.googleapis.com/auth/cloud-platform');

$service = new Google_Service_CloudResourceManager($client);

$optParams = [];

do {
  $response = $service->projects->listProjects($optParams);

  foreach ($response['projects'] as $project) {
    // TODO: Change code below to process each `project` resource:
    echo '<pre>', var_export($project, true), '</pre>', "\n";
  }

  $optParams['pageToken'] = $response->getNextPageToken();
} while ($optParams['pageToken']);
?>

推荐阅读