2016-11-03 6 views
2

Ich möchte Google BigQuery API implementieren, damit ich Abfragen von meinem PHP-Code in BigQuery ausführen kann.Google BigQuery API PHP Credential

Zuerst habe ich die Client-Bibliothek mit dem folgenden Befehl installiert:

composer require google/cloud 

Second ich das Google Cloud SDK durch folgenden Befehl installiert haben:

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

Dann laufe ich diesen Befehl das Credential erstellen :

gcloud beta auth application-default login 

Der gesamte Prozess ist Erfolg und nach dem Ausführen von Credentia l Anfrage bekomme ich folgende Meldung:

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. 

Dann will ich diesen Code auf PHP auszuführen:

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

Aber leider habe ich Fehler folgende Meldung:

Fatal error: Uncaught exception 'Google\Cloud\Exception\ServiceException' with message 'Could not load the default credentials 

Also meine Frage ist: was ist falsch und was muss ich tun?

Danke

+0

Sie haben eine niedrige Rate. Wichtig bei SO, Sie müssen akzeptierte Antworten markieren, indem Sie das Häkchen links neben der geposteten Antwort unterhalb der Abstimmung verwenden. Dies wird Ihre Rate erhöhen. Sehen Sie, wie das funktioniert, indem Sie diesen Link besuchen: http://meta.stackoverflow.com/questions/5234/how-does-accepting-an-answer-work#5235 – Pentium10

Antwort

2

Standard-Anmeldeinformationen durch die Google APIs Client Library for PHP vorgesehen sind, Versionen 2.0.0 und neuer. Um sie zu verwenden, rufen Sie useApplicationDefaultCredentials:

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

Dann die Anmeldeinformationen verwenden, um einen API-Dienst zugreifen, wie folgt:

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

Ich schlage vor, den Link Check-out Ich habe es viel mehr Möglichkeiten hat und wir empfehlen, service accounts zu verwenden.

+0

Hallo @ Pentium10 Danke für Ihre Antwort, ich habe versucht, hinzuzufügen $ client-> useApplicationDefaultCredentials(); aber ich habe diese Rückkehr: Fataler Fehler: Klasse "Google_Client" nicht gefunden? –

+0

stellen Sie sicher, dass Sie die richtige Version der Bibliothek 'Composer erfordern google/apiclient:^2.0' die GitHub hat viele Beispiele – Pentium10