我需要原始请求主体能够SHA-1消化它以验证Facebook webhook X-Hub-Signature标头,该标头随请求一起传递给我的Firebase功能(在Google Cloud Functions上运行).
问题在于,在这种情况下(带有Content-Type: application/json标题),GCF会自动解析使用bodyParser.json()该数据的主体消耗流中的数据(意味着它不能再次在Express中间件链中使用),并且只提供解析后的javascript对象req.body.原始请求缓冲区被丢弃.
我试图提供一个Express应用程序functions.https.onRequest(),但这似乎是作为子应用程序运行或者已经解析了请求主体的东西,就像你传递一个普通的请求 - 响应回调一样onRequest().
有没有办法禁用GCF为我解析身体?或者我可以以某种方式指定我自己的verify回调bodyParser.json()?或者还有其他方式吗?
PS:我一周前第一次联系Firebase支持,但由于缺乏响应,我现在在这里尝试.
更新:问题已经过去了一段时间,但自昨天以来一直以复仇的方式返回.部署现在真的需要永远,并且总是失败Server Error. connect ETIMEDOUT或Upload Error: Cannot read property 'response' of undefined与其他东西失败.
在尝试使用HideMyAss通过美国位置进行连接后,我发现这完全解决了我的问题!请注意,此问题不仅发生在我们在阿姆斯特丹办事处部署,而且还来自我们在鹿特丹的办事处.与此同时,我也听到更多人遇到其他Google服务的问题.
我已经使用此信息回复了相关的Firebase支持电子邮件,希望他们能够对此进行调查.同时我想我将不得不继续使用HideMyAss ..
-
在添加更多功能之后,部署功能的时间越来越长.有时一开始,但最近有一段时间我每次尝试$ firebase deploy --only functions随机部署的一个功能都失败了:
⚠函数[foo]:部署错误:执行环境失败
当我稍后再试一次时,它会毫无问题地部署(仍然需要2分钟才能部署,这似乎有点慢).
也许部署过程是超时的; 经过很长一段时间,它总是失败,永远不会很快.
也许我在美国以外的地方导致部署过程中与延迟相关的问题?虽然看起来不太可能..
我也在研究Firebase函数日志记录"函数执行需要60002毫秒,完成状态:'超时'"和其他性能问题,所以我想知道这些是否都是相关的.
PS:我还向https://firebase.google.com/support/报告了这一点,但是我在那里做的最后一份报告在15天后仍然没有回复,所以我将继续发布并在此发布.我在这个报告中包含了一个firebase-debug.log,但是没有在这里公开分享(不确定那里是否有任何令牌等).