【问题标题】:How to call Firebase Cloud Function that uses ExpressJS with cloud_functions如何调用使用 ExpressJS 和 cloud_functions 的 Firebase Cloud Function
【发布时间】:2020-05-01 21:04:54
【问题描述】:

我有一个使用 ExpressJS 的 Firebase Cloud Function 设置,我想从我的应用中调用它。

我当然可以只做一个 http 请求,但由于有一个 cloud_firestore 包 (dart/Flutter),我认为这是最好的方法,我猜它会为我处理身份验证。

端点只是一个快速应用程序:

const app = express();
app.post('/message', async function (req:any, res: any) {
   ...
   other code
   ...
}

在我的 Flutter 应用中我会这样做:

final HttpsCallable addMessage = new CloudFunctions(region: "us-central1")
      .getHttpsCallable(functionName: 'api');
  addMessage.call();

这将返回一个 NOT_FOUND 错误,可能是因为我必须传入 ExpressJS 的路径。 但我不知道该怎么做。

【问题讨论】:

    标签: firebase express google-cloud-functions


    【解决方案1】:

    Firebase 可调用函数客户端库不适用于任意 HTTP 端点。它仅适用于您根据documentation 编写的可调用函数。

    如果您有标准 HTTP 端点,只需使用常规 HTTP 客户端库即可。

    如果您想随请求一起传递 Firebase 身份验证凭据,Firebase Admin SDK documentation 中有一些示例。 (您使用 Admin SDK 来验证从客户端应用传递的凭据。)

    【讨论】:

    • 谢谢,我有点期待这个答案。我将使用 http 库,我认为我可以处理身份验证,因为我也可以使用 Postman 调用它。只需设置身份验证标头应该可以正常工作..?
    • 由您决定如何传递用户的凭据。客户端和服务器必须就在哪里找到它们达成一致。仅传递它们不足以实现任何类型的安全性 - 您的后端还必须验证它们并确定要做什么。
    • 当然可以。我为我的 ExpressJS api 制作了一些中间件,用于检查标头中的令牌。这已经奏效了,这就是为什么我让它听起来如此明显,sry
    猜你喜欢
    • 2018-01-24
    • 2021-11-24
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 2020-03-03
    • 2021-11-23
    相关资源
    最近更新 更多