首页 文章

Facebook Messenger API:设置webhook时遇到问题

提问于
浏览
14

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

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

资源

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

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

任何帮助是极大的赞赏 .

6 回答

  • 2

    我遇到了一个问题 . 我废弃了我的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/

  • 3

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

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

    基本上,您需要确保拥有支持node.js应用程序的主机并按原样运行它 . 它不适用于HTML内部 .

  • 6

    我刚刚通过在回调网址中添加'/ webhook'解决了这个问题...

  • 2

    @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');    
       }
    }
    

    请注意你究竟在做什么 . 但这就是我所做的,而且它正在发挥作用 .

    我've tested using ngrok server as I don' t有一个域名,回调网址是https://werwrwetwtw.ngrok.io/webhook

    希望这可以帮助!

  • 21

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

    • hub_verify_token

    • hub_mode

    • hub_challenge

    附:

    对不起,这对PHP有效

  • 4

    如果您将此作为 Node.js 应用程序运行,并且您来自问题中提到的The Facebook Quickstart Guide,则必须将webhook URL指向 [your-server-root]/webhook . 请注意the tutorial的这一部分:

    // 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);
    });
    

相关问题