16

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

无法验证 URL。响应与挑战不匹配,预期值 = '364011207',收到 ='

资源

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

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

任何帮助是极大的赞赏。

4

6 回答 6

28

我遇到了一个修复。我放弃了我的 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/

于 2016-04-13T11:31:32.333 回答
6

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

下面是使用 node.js 设置 messenger 机器人的简单步骤: https ://github.com/voronianski/simon-le-bottle

本质上,您需要确保您有一个支持 node.js 应用程序的主机并运行它。它在 HTML 中不起作用。

于 2016-04-14T22:00:28.983 回答
4

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

  • hub_verify_token
  • 集线器模式
  • hub_challenge

附言

对不起,这对 PHP 有效

于 2016-04-13T10:50:02.340 回答
4

如果您将其作为Node.js应用程序运行,并且您来自问题中提到的 Facebook 快速入门指南,则必须将 webhook URL 指向[your-server-root]/webhook. 请注意本教程的这一部分:

// Adds support for GET requests to our webhook
app.get('/webhook', (req, res) => {
    ...
    // Responds with the challenge token from the request
    res.status(200).send(challenge);
});
于 2018-06-29T00:41:59.967 回答
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 服务器进行了测试,因为我没有域名并且回调 URL 是https://werwrwetwtw.ngrok.io/webhook

希望这可以帮助!

于 2016-04-13T14:35:34.710 回答
3

我刚刚通过在回调 URL 中添加“/webhook”解决了这个问题......

于 2017-10-12T07:21:08.487 回答