Facebook Messenger 平台 ngrok
Posted
技术标签:
【中文标题】Facebook Messenger 平台 ngrok【英文标题】:Facebook Messenger Platform ngrok 【发布时间】:2016-08-09 09:03:33 【问题描述】:我尝试为 facebook messenger api 设置一个 webhook,并尝试通过 ngrok 转发到我的 localhost node.js 服务器。来自 facebook 的用于检查服务器的 GET 请求运行良好。但是,当我通过 Messenger 向我的网站发送消息时,我的 webhook 没有得到任何响应。当我卷曲 ngrok 地址时它工作正常。有什么建议吗?
谢谢
【问题讨论】:
首先要确保您遵循指南的Subscribe the App to a Page 部分。 我做到了,正如我所说,从 Facebook 发送 GET 调用以验证钩子是否有效.. 无需完成“订阅应用程序”部分即可设置和验证 webhook,这就是我提到它的原因。如果您已经完成了该部分,则需要共享代码,以便我们了解发生了什么。 有解决办法吗?我想我有类似的问题。我也在使用 ngrok,所以我不确定 ngrok 是否相关? 【参考方案1】:我遇到了类似的问题 -
我当前(半工作)的解决方法是从 Facebook 应用程序配置页面(在应用程序设置页面 -> 左侧面板中的 Messenger -> Webhooks 部分中)取消订阅我的测试页面,然后重新订阅我的测试 Facebook页。当我在 Messenger 的测试页面中输入内容后,我会立即收到 Http POST 消息。
当然,这只能帮助测试。它在生产环境中没有帮助。
【讨论】:
【参考方案2】:只要您用于 Messenger 集成的 Facebook 应用处于未发布状态,即未经过审核流程,只有管理员、开发人员和测试人员的消息会通过 webhook 中继。 检查您使用的用户是否对应用拥有正确的权限。
在某些情况下,Facebook 也会停止转发消息,例如,如果您的 webhook 端点反复返回错误。在developers.facebook.com 平台中检查您的警报仪表板。 解决方法是取消订阅,然后重新订阅一个页面。
更多提示: 根据您在接收端使用的框架,它可能会拒绝请求中带有 x-forwarded-for 标头的消息(在我的例子中是 Symfony 2)。 如果遇到此类问题,请使用 -host-header=rewrite 选项和 ngrok 重写请求标头。
【讨论】:
以上是关于Facebook Messenger 平台 ngrok的主要内容,如果未能解决你的问题,请参考以下文章
Facebook Messenger 平台/机器人欢迎配置的奇怪错误
如果 Facebook Messenger 平台上发生 EAI_AGAIN 错误,我该如何解决?
是否有事件或其他方式来处理用户在 Facebook Messenger 平台上向机器人发送的第一条消息?