1

Ich versuche, ein Zugriffs-Token zu REST Anrufe zu meinem Firestore DB zu bekommen. Ich bin mit PHP (nur Art und Weise jetzt) ​​und haben die nächsten Schritte:Get Firestore-Zugriffs-Token für REST API mit Google-API-Lib-Lib

und diesen Code erstellt enthalten:

putenv('GOOGLE_APPLICATION_CREDENTIALS='.__DIR__ .'/key.json'); 
$client = new Google_Client(); 
$client->useApplicationDefaultCredentials(); 
$client->addScope('https://www.googleapis.com/auth/datastore,https://www.googleapis.com/auth/cloud-platform'); 
$client->authorize(); 

ich auch ersetzen d der

$client->useApplicationDefaultCredentials(); 

Teil mit

$client->setAuthConfig(__DIR__ .'/key.json'); 

Nun, wenn ich den $ Client var_dump, bleibt das Token NULL.

Ich kann einfach nicht herausfinden, wie man das access_token für mein Dienstkonto bekommt. Hat jemand eine Idee wie ich ein Access Token bekommen kann?

Antwort

0
  1. Wenn Sie mehrere Bereiche hinzufügen möchten, müssen Sie ein Array anstelle einer Zeichenfolge verwenden. Ein String wird nur als ein einziger Bereich behandelt.

  2. Die $client->authorize() gibt eine Client Instanz zurück, die berechtigt ist, für die angegebenen Bereiche auf die Google-Dienste zuzugreifen. Also, $authorizedClient = $client->authorize(); wäre angemessener.

  3. Wenn Sie nur die Zugriffstoken abrufen möchten, können Sie $client->fetchAccessTokenWithAssertion() verwenden könnte, die Sie so etwas wie dies würde:

    Array 
    (
        [access_token] => ya29.c.............. 
        [token_type] => Bearer 
        [expires_in] => 3600 
        [created] => 1511280489 
    ) 
    

Dies ist die komplette Skript, das ich dies testen:

<?php 

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

$client = new Google_Client(); 
$client->useApplicationDefaultCredentials(); 
$client->addScope([ 
    'https://www.googleapis.com/auth/datastore', 
    'https://www.googleapis.com/auth/cloud-platform' 
]); 
// $client->authorize(); 

print_r($client->fetchAccessTokenWithAssertion()); 
+0

Vielen Dank! Das hat den Trick gemacht, funktioniert jetzt gut. –