Facebook Messenger API:设置webhook时遇到问题

时间:2016-04-13 10:09:30

标签: javascript php facebook webhooks facebook-messenger

我正在尝试在我的PHP网络服务器上为新的Facebook Messenger bot平台设置一个Web挂钩,并且收到此错误:

  

无法验证网址。响应与挑战不符,   期望值= '364011207',已收到='

资源

https://developers.facebook.com/docs/messenger-platform/quickstart

https://developers.facebook.com/docs/messenger-platform/webhook-reference#common_format

非常感谢任何帮助。

6 个答案:

答案 0 :(得分:23)

我遇到了一个问题。我废弃了我的js尝试并使用以下代码创建了一个新的php文件:

<?php

$challenge = $_REQUEST['hub_challenge'];
$verify_token = $_REQUEST['hub_verify_token'];

if ($verify_token === 'my_token_code') {
echo $challenge;
}

我在此视频的前10分钟获得了此代码: https://www.facebook.com/marketingdevelopers/videos/883648801749520/

答案 1 :(得分:6)

该代码是 node.js 代码,应该在不在HTML中的<script>标记中的服务器上运行。

这里简单介绍了如何使用node.js设置messenger bot: https://github.com/voronianski/simon-le-bottle

基本上,您需要确保拥有支持node.js应用程序的主机并按原样运行它。它不适用于HTML。

答案 2 :(得分:4)

我刚刚在回调网址中添加了'/ webhook'来解决这个问题......

答案 3 :(得分:3)

@shane

webhook: function(req, res) {

   if (req.query['hub.verify_token'] === 'tokentoken') {
      res.send(req.query['hub.challenge']);
   } else {
      res.send('Error, wrong validation token');    
   }
}

请注意你究竟在做什么。但这就是我所做的,而且它正在发挥作用。

我已经使用ngrok服务器进行了测试,因为我没有域名,回调网址为https://werwrwetwtw.ngrok.io/webhook

希望这有帮助!

答案 4 :(得分:2)

不确定是否有这个帮助,但FB发送的查询参数是否使用下划线而不是点,例如:

  • hub_verify_token
  • hub_mode
  • hub_challenge

P.S。

抱歉,这适用于PHP

答案 5 :(得分:2)

如果您将其作为<a href="/[table_name]/[table_item]>Link text</a>应用程序运行,并且来自问题中提到的The Facebook Quickstart Guide,则必须将Webhook URL指向Node.js 。请注意the tutorial的这一部分:

[your-server-root]/webhook