Firebase可调用函数+ CORS

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Firebase可调用函数+ 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

答案

传递给HttpsError的状态代码不能是test/code。它必须是此处列出的标准代码之一:https://firebase.google.com/docs/reference/functions/functions.https.HttpsError

另一答案

我的问题不在于CORS,而在于我的错误处理程序。我没有拒绝承诺,而是直接在catch处理程序中使用了throw

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

以上是关于Firebase可调用函数+ CORS的主要内容,如果未能解决你的问题,请参考以下文章

Firebase可调用函数+ CORS

Firebase 可调用函数失败 CORS 重定向

使用可调用的 Firebase 云函数

应用检查对 Firebase 可调用函数的不必要强制执行

Create React App 中 httpsCallable firebase 上的 CORS 错误

Firebase 可调用函数未接收参数