Могу ли я использовать JSON файл аутентификации с клиентом Cloud Firestore с php? - PullRequest
0 голосов
/ 02 апреля 2020

Я тестирую облачную Firestore php клиентскую библиотеку (https://github.com/googleapis/google-cloud-php/tree/master/Firestore)

В облачном хранилище клиента этот код работает:

   require 'vendor/autoload.php';

use Google\Cloud\Storage\StorageClient;

// Authenticating with keyfile data.
$storage = new StorageClient([
    'keyFile' => json_decode(file_get_contents('/path/to/keyfile.json'), true)
]);

// Authenticating with a keyfile path.
$storage = new StorageClient([
    'keyFilePath' => '/path/to/keyfile.json'
]);

// Providing the Google Cloud project ID.
$storage = new StorageClient([
    'projectId' => 'myProject'
]);

Я хочу знать, возможно ли использовать тот же код для инициализации клиента Firestore? Особенно часть с Json.

Он отлично работает с projetctId, но я хочу использовать его с keyFile или keyFilePath, если это возможно.

Спасибо за любые выводы.

1 Ответ

0 голосов
/ 02 апреля 2020

Для PHP библиотек и других языков лучше и практичнее использовать переменные среды, вместо этого объявите путь ключа JSON и проект в коде

GOOGLE_CLOUD_PROJECT - name of the project
GOOGLE_APPLICATION_CREDENTIALS - Path to JSON file

Этот метод гарантирует совместимость код с некоторыми безсерверными продуктами GCP, такими как Cloud Functions и App Engine.

Кроме того, это хорошая практика, потому что если вы загружаете этот код в репозиторий, учетные данные не будут включены в ваш код

Чтобы объявить свои учетные данные в своем коде для клиента firestore, проверьте следующий код:

 $db = new FirestoreClient([
        'projectId' => $projectId,
        'keyFilePath' =>  '/path/to/keyfile.json',

    ]);

Это не упомянуто в документации Firestore, но в исходном коде класса Firestoreclient появляется все параметры, которые вы можете использовать для инициализации клиента

@type string $apiEndpoint A hostname with optional port to use in
      place of the service's default endpoint.
@type string $projectId The project ID from the Google Developer's
      Console.
@type CacheItemPoolInterface $authCache A cache for storing access
      tokens. **Defaults to** a simple in memory implementation.
@type array $authCacheOptions Cache configuration options.
@type callable $authHttpHandler A handler used to deliver Psr7
      requests specifically for authentication.
@type callable $httpHandler A handler used to deliver Psr7 requests.
      Only valid for requests sent over REST.
@type array $keyFile The contents of the service account credentials
      .json file retrieved from the Google Developer's Console.
      Ex: `json_decode(file_get_contents($path), true)`.
@type string $keyFilePath The full path to your service account
      credentials .json file retrieved from the Google Developers
      Console.
@type int $retries Number of retries for a failed request. **Defaults
      to** `3`.
@type array $scopes Scopes to be used for the request.
@type bool $returnInt64AsObject If true, 64 bit integers will be
      returned as a {@see Google\Cloud\Core\Int64} object for 32 bit
      platform compatibility. **Defaults to** false.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...