Facebook Messenger Bot Webhook出现问题


Facebook Messenger Bot Webhook trouble

我正在尝试让FB Messenger Bot API工作。我目前正在尝试订阅一个webhook。我目前有一个以下形式的脚本:

#!/usr/bin/php
<?php
$challenge = $_REQUEST['hub_challenge'];
echo $challenge;  # HERE!
$verify_token = $_REQUEST['hub_verify_token'];
if ($verify_token === 'token') {
echo $challenge;
}
?>

然而,当我尝试"验证并保存"回调URL时,我得到了一个错误的形式:

 The URL couldn't be validated. Response does not match challenge, expected value = '401537941', received=''

即我的脚本正在发送一个空字符串。但是,如果我将上面标记为"HERE!"的行更改为"echo'cat'",则错误消息与预期的相同,只是"received='cat'。"。因此,我的脚本正在执行,并试图将一些内容发送回FB,但由于某种原因,$challenge变量为空。为什么会出现这种情况?

谢谢!

 if($_GET['hub_verify_token'] === "validation_token"){
     echo($_GET["hub_challenge"]);
 } else {
     echo("error");
 }

您的响应中可能有额外的字符串,因为您在打印挑战后没有退出。在浏览器中尝试您的脚本并检查html,看看是否有任何额外内容。

使用以下代码,因为您需要将验证代码与工作webhook调用分离。同时验证令牌不是你从Facebook创建的东西,它是你自己的关键词

/* validate verify token needed for setting up web hook */ 
if (isset($_GET['hub_verify_token'])) { 
   if ($_GET['hub_verify_token'] === 'YOUR_SECRET_TOKEN') {
       echo $_GET['hub_challenge'];
       return;
   } else {
       echo 'Invalid Verify Token';
       return;
   }
}

因此,在这种情况下,您的验证令牌是your_SECRET_token,现在当您设置web挂钩时,请在验证令牌中键入your_SECRET_token。

我最近在这里写了一个屏幕截图的分步指南。