我尝试为 facebook messenger api 设置一个 webhook,并尝试通过 ngrok 转发到我的 localhost node.js 服务器。来自 facebook 的用于检查服务器的 GET 请求工作正常。但是,当我通过 Messenger 向我的网站发送消息时,我的 webhook 没有得到任何响应。当我卷曲 ngrok 地址时它工作正常。有什么建议么 ?
谢谢
我尝试为 facebook messenger api 设置一个 webhook,并尝试通过 ngrok 转发到我的 localhost node.js 服务器。来自 facebook 的用于检查服务器的 GET 请求工作正常。但是,当我通过 Messenger 向我的网站发送消息时,我的 webhook 没有得到任何响应。当我卷曲 ngrok 地址时它工作正常。有什么建议么 ?
谢谢
只要您用于 Messenger 集成的 Facebook 应用程序处于未发布状态,即未经过审核过程,只有管理员、开发人员和测试人员的消息通过 webhook 中继。检查您使用的用户是否对应用程序具有正确的权限。
在某些情况下,Facebook 也会停止转发消息,例如,如果您的 webhook 端点反复返回错误。在developers.facebook.com 平台中检查您的警报仪表板。解决方案是取消订阅,然后再次订阅页面。
进一步提示:根据您在接收端使用的框架,它可能会拒绝请求中带有 x-forwarded-for 标头的消息(在我的情况下为 Symfony 2)。如果遇到此类问题,请使用 -host-header=rewrite 选项和 ngrok 重写请求标头。
我有类似的问题 -
我当前(半工作)的解决方法是从 Facebook 应用程序配置页面(在应用程序设置页面 -> 左侧面板中的 Messenger -> Webhooks 部分中)取消订阅我的测试页面,然后重新订阅我的测试 Facebook 页面。在我在 Messenger 的测试页面中输入内容后,我会立即收到 Http POST 消息。
当然这只能帮助测试。它在生产环境中没有帮助。