Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Facebook Messenger机器人Webhook问题_Php_Facebook_Facebook Sdk 4.0_Facebook Messenger_Chatbot - Fatal编程技术网

Php Facebook Messenger机器人Webhook问题

Php Facebook Messenger机器人Webhook问题,php,facebook,facebook-sdk-4.0,facebook-messenger,chatbot,Php,Facebook,Facebook Sdk 4.0,Facebook Messenger,Chatbot,我正在尝试让FB Messenger机器人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;

我正在尝试让FB Messenger机器人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;
}

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


谢谢

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

 if($_GET['hub_verify_token'] === "validation_token"){
     echo($_GET["hub_challenge"]);
 } else {
     echo("error");
 }
使用以下代码,因为您需要将验证代码与工作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;
   }
}
因此,在本例中,验证令牌是您的\u SECRET\u令牌,现在当您设置web钩子时,请在验证令牌中键入您的\u SECRET\u令牌


我最近写了一封信

您的响应中可能有额外的字符串,因为您在打印挑战后没有退出。在浏览器中尝试您的脚本,并检查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;
   }
}
因此,在本例中,验证令牌是您的\u SECRET\u令牌,现在当您设置web钩子时,请在验证令牌中键入您的\u SECRET\u令牌


我最近写了一封信

设置webhook时,是否将“验证令牌”设置为令牌?如果是,请尝试在此处取出#!是的,我在这里加了#!在事实之后排队,看看$challenge是否返回了任何内容。现在我的代码中没有。在设置webhook时,是否将“验证令牌”设置为令牌?如果是,请尝试在此处取出#!是的,我在这里加了#!在事实之后排队,看看$challenge是否返回了任何内容。实际上,我的代码中现在没有。您好,Sritam,我尝试了这个方法,返回的消息是“error”,因为$\u GET['hub\u verify\u token']似乎是空的。如何检查FB正在发送我的回调的GET请求的内容?您好,Sritam,我尝试了此操作,返回的消息是“error”,因为$\u GET['hub\u verify\u token']似乎为空。如何检查FB发送回叫的GET请求的内容?