javascript - 如何在 Google Cloud Function 中获取原始请求正文?

标签 javascript firebase google-cloud-functions

我需要原始请求正文才能对其进行 SHA-1 消化,以验证随请求一起传递到我的 Firebase 函数(在 Google Cloud Functions 上运行)的 Facebook webhook X-Hub-Signature header 。

问题是在这种情况下(使用 Content-Type: application/json header )GCF 使用 bodyParser.json() 自动解析正文,它消耗来自流的数据(意味着它不能在 Express 中间件链下再次使用)并且只提供解析的 javascript 对象作为 req.body。原始请求缓冲区被丢弃。

我试图为 functions.https.onRequest() 提供一个 Express 应用程序,但它似乎是作为子应用程序运行的,或者请求主体已经被解析的东西,就像当您将一个简单的请求-响应回调传递给 onRequest()

有什么方法可以禁止 GCF 为我解析正文吗?或者我可以以某种方式指定我自己的 verify 回调到 bodyParser.json() 吗?还是有别的办法?

PS:我在一周前就此问题首次联系了 Firebase 支持人员,但由于那里没有回应,我现在在这里尝试。

最佳答案

现在您可以从req.rawBody 获取原始主体。它返回 Buffer。参见 documentation了解更多详情。

感谢 Nobuhito Kurose 在 comments 中发布此内容.

关于javascript - 如何在 Google Cloud Function 中获取原始请求正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42950561/

相关文章:

ios - Swift 2.3 在 pod 更新后使用未解析的标识符 Firebase 'FIR'

node.js - 无法使用 Admin SDK 在 Firestore 模拟器中获取 FieldValue.increment

javascript - Bootstrap Typeahead 转义?

java - 无法解决 FirebaseOptions.Builder().setCredentials()

android - 将 firebase 添加到我的 Android 项目时出错

android - Firebase 函数响应返回 null

node.js - Firebase - Node 云函数解析触发器时出错 : Cannot find module 'firebase-functions'

javascript - 使用 JavaScript(不是 jQuery)将用户输入实时过滤到定义的模式

javascript - 获取被单击元素的属性值

javascript - node-webkit:如何检测有多少屏幕/显示器用户在使用?