Firebase Callable Function + CORS

Я пытаюсь вызвать вызываемую облачную функцию из моего приложения, но у меня возникают проблемы с CORS. enter image description here

Я не могу включить Cors, так как у меня нет доступа к запросу и ответу на функцию onCall. Это моя функция:

exports.UserInvitation = functions.https.onCall((data, context) => {
  const email = data.email


  return new Promise((resolve, reject) => {
    admin.auth().createUser({
      email: email,
      emailVerified: false,
      password: password
    }).then(resolve).catch((err) => {
      console.error(err.code)
      reject(new functions.https.HttpsError(err.code, err.message))
    })
  })
})

И вот как я это называю:

functions.httpsCallable('UserInvitation')({ email: this.input.value }).then((data) => {
      console.log('Sent invitation:', data)
})

Firebase-functions package.json:

{
  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "serve": "firebase serve --only functions",
    "shell": "firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "dependencies": {
    "bluebird": "^3.5.1",
    "firebase-admin": "~5.12.0",
    "firebase-functions": "^1.0.1"
  },
  "private": true
}

WEB SDK Firebase версия: 4.13.1

Ответы

Ответ 2

Моя проблема была не с CORS, а с моим обработчиком ошибок. Вместо отказа от обещания я использовал throw непосредственно в обработчике уловов.

catch((err) => {
  throw new functions.https.HttpsError('unknown', err.message, err)
})

Ответ 3

У меня была эта проблема с некоторыми из моих функций Firebase, но не с другими. В конце концов я исправил это, сделав это:

  1. Комментирование функции в index.js
  2. Запуск Firebase развертывания
  3. Ввод y в ответ на приглашение удалить функцию
  4. Ожидание от 5 до 10 минут
  5. Удаление комментариев вокруг функции и повторное развертывание firebase

Без каких-либо изменений в самой функции, теперь она работает без каких-либо проблем с CORS.