为什么Facebook最近停止推送我们的webhook应用程序的更新?

时间:2017-07-27 18:55:21

标签: facebook facebook-graph-api

我继承了一个用Node编写的Facebook webhook应用程序,用于跟踪与我们组织相关的几个Facebook页面的帖子。在2017-07-02(大约3周前),似乎Facebook停止推动webhook更新到这个应用程序。在此之前的几年里,该应用程序已成功运行。

这是我在应用程序访问日志中看到的最后一个条目:

724661:173.252.105.118 - - [02/Jul/2017:16:40:23 -0700] "POST /callback/facebook HTTP/1.1" 200 5 "-" "Webhooks/1.0"
724662:66.220.145.151 - - [02/Jul/2017:16:55:29 -0700] "POST /callback/facebook HTTP/1.1" 200 5 "-" "Webhooks/1.0"
724663:31.13.114.11 - - [02/Jul/2017:16:55:30 -0700] "POST /callback/facebook HTTP/1.1" 200 5 "-" "Webhooks/1.0"

我已经确认我们的应用程序仍在运行,方法是使用curl发送一个成功处理的手动请求。

我在这里看到Facebook标志着他们的API v2.3的可用性将于7月8日结束:

upgrade guide for v2.3 to v2.4中,它注意到:

  

您的应用需要考虑的v2.3和v2.4之间有许多页面权限更改。值得注意的是,现在需要页面访问令牌与/v2.4/{page_id}/promotable_posts,/v2.4/{page_id}/offers和/v2.4/{page_id}/milestones连接。

这就是Facebook停止推送我们的webhook端点更新的原因吗?如果是这样,我在哪里可以找到有关使用带有webhooks的页面访问令牌的更多信息?

1 个答案:

答案 0 :(得分:2)

如果你的应用程序没有足够快地响应200状态代码,Facebook会在一段时间后停止向你的webhook回调网址发送更新。在这种情况下,您必须再次设置回调网址。

这有点 - 记录在案 https://developers.facebook.com/docs/messenger-platform/webhook-reference#response

  

当您通过Facebook调用时,您的webhook回调应始终返回200 OK HTTP响应。如果不这样做,可能会导致您的webhook被Messenger平台取消订阅。

     

尽快返回200 OK HTTP非常重要。在向您发送下一条消息之前,Facebook将等待200。在大批量机器人中,延迟返回200会导致Facebook向您的webhook发送消息的显着延迟。

这里没有明确提到这一点,但我很确定在一定时间内没有用200 回复也被视为失败。

更少的实时相关工具,例如Facebook Scraper(从用户共享的链接中获取Open Graph元数据)的超时时间为10秒;所以Facebook对webhooks的耐心不会再长,特别是对于与Messenger平台相关的webhook而言可能更短(更多) - 这些响应时间毕竟会直接影响用户体验。

编辑:您意识到您实际上询问的是Graph API webhooks,而不是Messenger平台。但对于那些 - https://developers.facebook.com/docs/graph-api/webhooks#callback

,它们是相似的
  

如果发送到您服务器的任何更新失败,我们将立即重试,然后在接下来的24小时内以更低的频率再尝试几次。在这些情况下,您的服务器应处理重复数据删除。 24小时未被接受的更新将被删除。

     

响应
  您的端点应为所有更新通知返回200 OK HTTPS响应。

根据FB开发者小组的讨论,我知道在这种情况下,重复的超时也会导致从webhook中取消订阅。