Bigquery не может получить учетные данные по умолчанию

Я пытаюсь настроить Google Bigquery с Firebase и у меня возникли некоторые проблемы. я имею gcloud установлен на моем компьютере (MacOS Sierra) и в моем проекте установлено облако Google через композитор.

Следующий код на моем проекте:

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

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

# Your Google Cloud Platform project ID
$projectId = 'hidden here only';

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

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

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

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

Все, что я пытаюсь сделать, это просто создать набор данных в BigQuery через библиотеку, но я не могу из-за следующей ошибки:

Fatal error: Uncaught Google\Cloud\Exception\ServiceException: Could not load the default credentials. Browse to https://developers.google.com/accounts/docs/application-default-credentials for more information in /Applications/MAMP/htdocs/projects/work/bigquery-tests/vendor/google/cloud/src/RequestWrapper.php on line 219

Я пробовал бегать gcloud beta auth applications-default login как показано в примере кода, но после входа в браузер ошибка по-прежнему присутствует. Любая помощь будет отличной, спасибо!

0

Решение

Вы были очень близки, просто вам нужно настроить учетные данные по умолчанию для учетной записи службы. putenv а также useApplicationDefaultCredentials(), Это рабочий код, который я использую в библиотеке https://github.com/google/google-api-php-client Вам нужно получить файл ключа учетной записи службы из консоли: https://console.cloud.google.com/iam-admin/serviceaccounts/

composer.json

{
"require": {
"google/cloud": "^0.13.0",
"google/apiclient": "^2.0"}
}

php файл

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

$query="SELECT repository_url,
repository_has_downloads
FROM   [publicdata:samples.github_timeline]
LIMIT  10";
$client = new Google_Client();
putenv('GOOGLE_APPLICATION_CREDENTIALS='.dirname(__FILE__) . '/.ssh/dummyname-7f0004z148e1.json');//this can be created with other ENV mode server side
$client->useApplicationDefaultCredentials();

$builder = new ServiceBuilder([
'projectId' => 'edited',
]);

$bigQuery = $builder->bigQuery();

$job = $bigQuery->runQueryAsJob($query);
$info=$job->info();
//      print_r($info);
//      exit;
$queryResults = $job->queryResults();

/*$queryResults = $bigQuery->runQuery(
$query,
['useLegacySql' => true]);*/

if ($queryResults->isComplete())
{
$i = 0;
$rows = $queryResults->rows();

foreach ($rows as $row)
{
$i++;

$result[$i] = $row;
}
}
else
{
throw new Exception('The query failed to complete');
}

print_r($result);
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]