Облачная функция Firebase httpsCallable возвращает неизвестную ошибку - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь развернуть облачную функцию Firebase. При развертывании из CLI было сообщение об успешном завершении, и никаких ошибок не отображалось.

Все остальные функции в этом проекте работают нормально, просто эта функция не работает.

Когда Я пытаюсь вызвать эту функцию из своего приложения. Я получаю сообщение об ошибке CORS:

POST https://{url}/volunteering-searchPeople net::ERR_FAILED

Чтобы отладить функцию, я удалил все, и теперь это просто так:

const searchPeople = functions.region('europe-west1').https.onCall(async (data, context) => {
  const {
    managedBy,
    helpPage,
    contactStatus,
    needs,
    postcode,
    noVolunteers
  } = data;

  return Promise.resolve('done');
})

Это называется из приложения здесь:

const testFunction = functions.httpsCallable('volunteering-testFunction')
testFunction().then((result) => console.log({result}))

Работает, когда запускается в эмуляции на локальном хосте. Когда вы go обращаетесь непосредственно к URL-адресу, появляется это сообщение (которое отличается от сообщения об ошибке, возвращаемого всеми другими функциями в этом проекте):

Error: Forbidden
Your client does not have permission to get URL /volunteering-searchPeople from this server.

Когда вы go обращаетесь к этому URL-адресу, ничего появляется в логах. Если я запускаю тест непосредственно из консоли облачных функций Google, он отображается в журналах облачных функций, но это единственный способ запустить эту функцию.

Редактировать: Это сейчас происходит для всех новых функций, которые я пытаюсь развернуть

Edit2: Эта ошибка появляется только для функций, развернутых в europe-west1 или europe-west2. Новые функции в us-central1 работают нормально.

1 Ответ

1 голос
/ 25 марта 2020

Обычно вы не должны вызывать функцию Callable Cloud через URL , а использовать специальные методы Client SDK , который вы используете (JS, Android, iOS, et c ..), как описано в do c здесь .

Например, с JS SDK вы должны сделать следующее:

var functions = firebase.app().functions('europe-west1');
//...
var searchPeople = functions.httpsCallable('searchPeople');
searchPeople(...).then(function(result) {
  // ...
});

С другой стороны, облачные функции HTTPS должны вызываться через URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...