Примечание: я знаю, что мне здесь не хватает некоторых основных компонентов, но я очень ценю любую помощь, так как я все еще очень плохо знаком с Firebase в целом.
Цель
- Получитьввод на веб-странице.
- Проверьте ввод в каталоге контактов Google с помощью API контактов.
- Обновите страницу информацией о контакте и некоторыми вопросами.
- Публикация ответовна эти вопросы к онлайн-листам 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 для клиента и, очевидно, облачные функции для бэкэнда.