2016-04-20 7 views
0

Я пытаюсь запустить API-интерфейс FB Messenger Bot. Сейчас я нахожусь на шаге, где я пытаюсь подписаться на веб-сайт. Я в настоящее время есть сценарий следующего вида:Facebook Messenger Bot Webhook trouble

#!/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='' 

а именно, что мой сценарий отправляя пустую строку. Однако, если я изменю строку, помеченную «ЗДЕСЬ!» выше «echo» cat », сообщение об ошибке одно и то же, за исключением« received = 'cat », как и ожидалось. Таким образом, мой скрипт выполняется и пытается отправить некоторый контент обратно в FB, но по какой-то причине переменная $ challenge пуста. Почему это может быть так?

Спасибо!

+0

Когда вы настраивали webhook, вы установили флажок «Проверить токен» как токен? Если да, попробуйте снять # ЗДЕСЬ! линия целиком. – Sritam

+0

Да, я добавил #HERE! после факта просто посмотреть, возвращал ли вызов $ ничего. Сейчас это не в моем коде. – MEric

ответ

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

привет Sritam, я пробовал это, и мое возвращенное сообщение было «ошибкой», потому что кажется, что $ _GET ['hub_verify_token'] пуст. Как я могу проверить, что содержимое запроса GET FB отправляет мой обратный вызов? – MEric

0

Возможно, в ответе есть дополнительная строка, поскольку вы не выходите после вызова печати. Попробуйте свой скрипт в браузере и проверьте html, чтобы узнать, есть ли что-то дополнительное.

Используйте следующий код, так как вам нужно будет отделить код подтверждения от ваших вызовов веб-кейсов. Также проверьте маркер не то, что вы создаете с 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, теперь, когда вы настраиваете веб-крюк, тип YOUR_SECRET_TOKEN в знак подтверждения.

Я написал недавно a step by step guide with screen shots here.