Как вы вызываете функцию Firebase из клиента и возвращаете данные? - PullRequest
0 голосов
/ 31 октября 2019

Примечание: я знаю, что мне здесь не хватает некоторых основных компонентов, но я очень ценю любую помощь, так как я все еще очень плохо знаком с Firebase в целом.

Цель

  1. Получитьввод на веб-странице.
  2. Проверьте ввод в каталоге контактов Google с помощью API контактов.
  3. Обновите страницу информацией о контакте и некоторыми вопросами.
  4. Публикация ответовна эти вопросы к онлайн-листам Google Sheets с использованием API Sheets.

Я читал документы по функциям Firebase и могу легко написать облачные функции, однако мне неясно, как на самом деле вызыватьфункция с веб-страницы клиента. Я видел людей, использующих такие модули, как Handlebars и Consolidate, для рендеринга всей веб-страницы и отправки ее обратно клиенту, но я пытаюсь просто позвонить, скажем, с помощью идентификационного номера, функции ион будет использовать Контакты API, чтобы затем вернуть профиль человека. Моя основная причина для реализации этого в бэкэнд-функции заключается в том, чтобы скрыть ключ API и учетные данные для этих служб.

Я следую этим документам >> https://firebase.google.com/docs/functions/callable

//index.js in the functions folder on backend
const functions = require('firebase-functions');

exports.testFunction = functions.https.onCall((data, context) => {
  return(data.text + " has been received!");
});
//index.js in hosting folder on client side
const firebase = require('firebase');
require('firebase/functions')

firebase.initializeApp({
    apiKey: 'my-api-key',
    authDomain: 'my-authDomain',
    projectId: 'my-projectId',
    databaseURL: 'my-databaseURL'
});

const functions = firebase.functions();
const test = firebase.functions().httpsCallable('testFunction');

test({
        text: 'hello'
    }).then(res=>{
        console.log(res);
    }).catch(error=>{
        console.log(error);
})

Вот ошибки, которые я получаю

Ответ предпечатной проверки не был успешным

[Ошибка] Fetch API не может загрузить {url моей функции} из-за проверок контроля доступа.

[Ошибка] Не удалось загрузить ресурс: ответ предполетной проверки не выполнен(тест, строка 0)

[Ошибка] Необработанное Отклонение обещания: Ошибка: внутренняя (анонимная функция) (index.js: 39716) advanceReactionJob

Я уверен, что мне нужно что-то вродезаголовка для моего запроса GET и POST, но я не нашел четкой документации о том, что добавить. Больше, чем решение описанной выше ошибки, я хочу знать, каков наилучший способ вызова функции с клиентского сайта?

Я использую хостинг Firebase для клиента и, очевидно, облачные функции для бэкэнда.

...