Facebook Messenger API — Невозможно подтвердить URL-адрес веб-крючка (PHP)

Я пытаюсь настроить чат-бота fb messenger, но не могу проверить URL обратного вызова webhook. Каждый раз, когда я пытаюсь проверить это, я получаю это сообщение об ошибке — URL не может быть проверен. Ответ не соответствует запросу, ожидаемое значение = ‘1596214014’, получено = »

Вот скриншот:

Скриншот

Вот php, который я использую —

<?php

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

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

Я также пытался

echo $_GET['hub_challenge'];

и просто

echo file_get_contents('php://input');

Все это приводит к тому же сообщению об ошибке, что и выше. На самом деле, насколько я могу судить, Facebook не отправляет запрос GET на мой сервер или не содержит никаких данных. Может кто-нибудь сказать, если я делаю что-то не так или есть настройки, которые мне нужно изменить, чтобы Facebook правильно отправлял данные?

Изменить — при проверке журналов доступа это то, что я нахожу, похоже, что Facebook не отправляет никаких данных в запросе на получение.

2a03:2880:1010:dffb:face:b00c:0:8000 - - [19/Apr/2016:20:50:06 +0000] "GET /wp-content/plugins/applications/fbmessenger.php HTTP/1.0" 200 - "-" "facebookplatform/1.0 (+http://developers.facebook.com)

Спасибо

0

Решение

просто попробуйте мой код, и он сработает.

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

if ($verify_token === 'Your's app token') {
echo $challenge;
}
//Token of app
$row = "Token";$input = json_decode(file_get_contents('php://input'), true);

//Receive user
$sender = $input['entry'][0]['messaging'][0]['sender']['id'];
//User's message
$message = $input['entry'][0]['messaging'][0]['message']['text'];//Where the bot will send message
$url = 'https://graph.facebook.com/v2.6/me/messages?access_token='.$row;$ch = curl_init($url);

//Answer to the message adds 1
if($message)
{
$jsonData = '{
"recipient":{
"id":"'.$sender.'"},
"message":{
"text":"'.$message. ' 1' .'"}
}';
};$json_enc = $jsonData;

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $json_enc);

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));

if(!empty($input['entry'][0]['messaging'][0]['message'])){
$result = curl_exec($ch);
}
4

Другие решения

Не могли бы вы попробовать мой API? https://github.com/Fritak/messenger-platform

Если вы установите его как в примере, он должен работать:

// This is just an example, this method of getting request is not safe!
$stream  = file_get_contents("php://input");
$request = empty($stream)? $_REQUEST : $stream;

$bot = new \fritak\MessengerPlatform(
['accessToken'      => 'token_for_app',
'webhookToken'     => 'my_secret_token',
'facebookApiUrl'   => 'https://graph.facebook.com/v2.6/me/' //2.6 is minimum
], $request);

if($bot->checkSubscribe())
{
print $bot->request->getChallenge();
exit;
}

Если нет, проблема где-то между Facebook и скриптом, а не в самом PHP. Перейти проверить настройки Apache и т. Д.

Ну, проблема может быть на стороне Facebook, у них были некоторые проблемы за последние несколько дней …

0

Есть только этот код в вашем php-файле: (fbmessenger.php)

<?php
// header('HTTP/1.1 200 OK');

/* GET ALL VARIABLES GET & POST */
foreach ($_REQUEST AS $key => $value){
$message .= "$key => $value ($_SERVER[REQUEST_METHOD])\n";
}
$input = file_get_contents("php://input");
$array = print_r(json_decode($input, true), true);
file_put_contents('fbmessenger.txt', $message.$array."\nREQUEST_METHOD: $_SERVER[REQUEST_METHOD]\n----- Request Date: ".date("d.m.Y H:i:s")." IP: $_SERVER[REMOTE_ADDR] -----\n\n", FILE_APPEND);
echo $_REQUEST['hub_challenge'];

У вас будут запросы, сохраненные в файле с именем «fbmessenger.txt» в том же каталоге.

Обратите внимание, что по какой-то странной причине вам может потребоваться несколько раз
получить одобрение & спасен! (Я должен был нажать «сохранить» 8-9 раз, прежде чем FB
одобренная ссылка)

Убедитесь, что вы используете соединение https (SSL), и после того, как ваше соединение установлено, проверьте ваш токен с помощью «hub_verify_token», чтобы убедиться, что запрос поступает от fb.

0
По вопросам рекламы [email protected]