Получите токен доступа Firestore для REST api с помощью google-api-php lib

Я пытаюсь получить токен доступа для выполнения REST вызовов моей базы данных Firestore. Я использую PHP (пока единственный способ) и предпринял следующие шаги:

И создал этот код:

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();

Я также заменил

$client->useApplicationDefaultCredentials();  

часть с

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

Теперь, когда я var_dump $ client, токен остается NULL.

Я просто не могу понять, как получить access_token для моей учетной записи службы. Кто-нибудь знает, как я могу получить токен доступа?


person P Bee    schedule 21.11.2017    source источник


Ответы (1)


  1. Если вы хотите добавить несколько областей видимости, вам придется использовать массив вместо строки. Строка будет рассматриваться только как одна единственная область видимости.

  2. $client->authorize() возвращает экземпляр Client, которому разрешен доступ к службам Google для указанных областей. Итак, $authorizedClient = $client->authorize(); было бы более подходящим.

  3. Если вы просто хотите получить токен доступа, вы можете использовать $client->fetchAccessTokenWithAssertion(), что даст вам что-то вроде этого:

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

Вот полный сценарий, который я использовал для проверки:

<?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());
person jeromegamez    schedule 21.11.2017