Firebase Firestore с REST (PHP)

#php #firebase #google-cloud-firestore

#php #firebase #google-облако-firestore

Вопрос:

Я использую Firebase Firestore для одного из моих мобильных приложений. Мне нужно что-то прочитать с какого-то внешнего сайта и обновлять / перезаписывать одно поле Firestore каждый понедельник в определенное время. Прямо сейчас я делаю это вручную. Я хочу автоматизировать этот процесс.

У меня есть PHP-приложение с Cpanel. Я хочу иметь задание CRON, которое будет обновлять это поле каждый понедельник. Я планирую использовать вызовы REST для Firestore для обновления поля, но не могу выполнить часть аутентификации…

Я также создал учетную запись службы для своего приложения и загрузил файл project-name-xxxx.json с закрытым ключом. У меня также есть API-КЛЮЧ. Но не зная, как использовать оба из них для аутентификации и обмена данными. Сейчас я пытаюсь использовать Postman, но безуспешно.

Может ли кто-нибудь сказать мне, как я могу пройти аутентификацию с помощью REST API, подав в суд на API-КЛЮЧ и json-файл, которые у меня есть.

Спасибо за ваше время

Ответ №1:

Хорошо, итак, есть два способа сделать это.

  1. Запрограммируйте облачную функцию, задайте в ней нужное поле и вызовите ее из клиентского SDK с аутентифицированным пользователем в системе, или

  2. На вашем удаленном сайте установите Node Admin SDK и используйте там учетную запись службы для прямого подключения к firestore и обновления поля.

Комментарии:

1. Я думаю, что облачная функция лучше. Проще.

2. Спасибо, что уделили мне время. Поскольку мне нужно каждый раз обновлять только одно поле, я просто передаю значение в качестве параметра запроса облачной функции firebase на основе http, и это сработало. Я все еще сталкиваюсь с проблемой настройки клиентского SDK или node Admin SDK на моем php-сервере…

3. Без проблем. Да, итак, для начала, я думаю, что нет PHP Admin SDK, поэтому вам нужно установить Node и запустить код оттуда, я сделал это, но у меня нет образца под рукой; клиентский SDK для Web — это Javascript для запуска в браузере.