【问题标题】:fb messenger bot always return empty json while verification of webhooksfb messenger bot 在验证 webhook 时总是返回空 json
【发布时间】:2017-07-01 18:01:02
【问题描述】:

我的节点 js 机器人无法验证 facebook messenger 机器人平台的验证令牌。我已经按照给定的官方文档在开发者控制台中正确地完成了 webhook 设置。 我之前已经构建了一个聊天机器人,所以我可以确信我已经正确配置了应用程序控制台设置。请检查我的以下代码并告诉我它是否有任何问题。

'use strict'

const express = require('express');
const bodyParser = require('body-parser');
const request = require('request');
const app = express();

app.set('port', (process.env.PORT || 5000));

// Process application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({extended: false}));

// Process application/json
app.use(bodyParser.json());

const VALIDATION_TOKEN = (process.env.MESSENGER_VALIDATION_TOKEN) ?
  (process.env.MESSENGER_VALIDATION_TOKEN) :
  'alex';


// Webhook route
app.get('/', function (req, res) {
  console.log(req.query);
  // console.log(req.query['hub.verify_token']);
  if (req.query['hub.verify_token'] === VALIDATION_TOKEN) {
    console.log("Validating webhook");
    res.status(200).send(req.query['hub.challenge']);
  } else {
    console.error("Failed validation. Make sure the validation tokens match.");
    res.sendStatus(403);          
  }
});

// Spin up the server
app.listen(app.get('port'), function() {
    console.log('running on port', app.get('port'));
});    

console.log(req.query) 返回一个空对象,并且 if-else 的 else 部分总是执行并且控制台打印: “验证失败。确保验证令牌匹配。”

【问题讨论】:

  • 即使您尝试使用 curl 命令,您的 webhook 路由是否也不返回任何内容?另外,Facebook Messenger 是否只允许带有 https 的回调 url?我问这个是因为您的代码没有 https 代码。再次仔细检查您的 webhook 设置。
  • 它返回 { 成功 : true }。是的,我正在使用 heroku。
  • 我实际上是从facebook给出的示例中复制了代码。

标签: node.js bots facebook-messenger facebook-messenger-bot


【解决方案1】:

我认为您在设置 webhook 时可能使用“https://your_heroku_url/webhook”作为回调 url,但您在代码中调用了“https://your_heroku_url/”。试试下面的代码:

app.get('/webhook', function (req, res) {
  if (req.query['hub.verify_token'] === VALIDATION_TOKEN) {
    console.log("Validating webhook");
    res.status(200).send(req.query['hub.challenge']);
  } else {
    console.error("Failed validation. Make sure the validation tokens match.");
    res.sendStatus(403);          
  }
});

参考:https://developers.facebook.com/docs/messenger-platform/guides/quick-start

【讨论】:

  • 不,我的设置正确。我在发布请求时收到用户的消息。
  • hmm..当 webhook 未通过验证时,您如何获得发布请求?
猜你喜欢
  • 1970-01-01
  • 2017-12-16
  • 1970-01-01
  • 1970-01-01
  • 2016-11-09
  • 1970-01-01
  • 2021-12-29
  • 2021-06-25
  • 1970-01-01
相关资源
最近更新 更多