0

J'essaie de configurer Google Bigquery avec Firebase et j'ai quelques problèmes. J'ai gcloud installé sur ma machine (MacOS Sierra) et ai installé google cloud via composer sur mon projet.Bigquery n'a pas pu obtenir les informations d'identification par défaut

Le code suivant sur mon projet:

# 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.'; 

Tout ce que je suis en train de faire est de créer juste un jeu de données au sein BigQuery via la bibliothèque, mais je ne suis pas en mesure de en raison de l'erreur suivante:

J'ai essayé d'exécuter gcloud beta auth applications-default login comme le dit le code d'exemple, mais après la connexion sur le navigateur, l'erreur est toujours présente. Toute aide serait géniale, merci!

Répondre

3

Vous étiez très proche, il vous suffit de configurer les informations d'identification par défaut du compte de service, voir les lignes putenv et useApplicationDefaultCredentials(). Ceci est un code de travail j'utiliser la bibliothèque https://github.com/google/google-api-php-client Vous devez obtenir votre compte de service fichier clé de la console: https://console.cloud.google.com/iam-admin/serviceaccounts/

composer.json

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

fichier 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); 
+1

Vous ne devriez pas avoir besoin de la dépendance 'google/apiclient' pour le faire. L'appel 'putenv' devrait suffire à instancier' ServiceBuilder'. – jdp

+0

@ Pentium10 Comment télécharger le fichier clé? J'ai la permission d'afficher les clés mais je ne vois pas de bouton de téléchargement. –

+0

@JoeScotto s'il vous plaît voir le lien suivant pour un guide sur la façon de télécharger votre fichier de clés: https://googlecloudplatform.github.io/google-cloud-php/#/docs/v0.20.1/guides/authentication –