Node.js Fb开发商问题-';URL无法';无法验证。响应与预期的质询不匹配';
我使用以下文件启动了Heroku应用程序:- app.jsNode.js Fb开发商问题-';URL无法';无法验证。响应与预期的质询不匹配';,node.js,facebook,heroku,chatbot,facebook-chatbot,Node.js,Facebook,Heroku,Chatbot,Facebook Chatbot,我使用以下文件启动了Heroku应用程序:- app.js '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-w
'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())
// Index route
app.get('/', function (req, res) {
res.send("Hello world, I seem to be working")
})
// for Facebook verification
app.get('/webhook', function (req, res) {
if (req.query['hub.verify_token'] === 'test-token') {
res.send(req.query['hub.challenge']);
} else {
res.send('Error, wrong validation token');
}
})
// Spin up the server
app.listen(app.get('port'), function() {
console.log('running on port', app.get('port'))
})
.gitignore
node_modules
web: node app.js
package.json
{
"name": "heroku-node-practice",
"version": "1.0.0",
"description": "New bot",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node app.js"
},
"author": "Paigal",
"license": "ISC",
"dependencies": {
"body-parser": "^1.17.1",
"express": "^4.15.2",
"foobar": "^1.1.0",
"mongoose": "^4.9.8",
"request": "^2.81.0"
}
}
Procfile
node_modules
web: node app.js
我使用以下命令安装了node.js依赖项:
npm install express request body parser--save
在git push heroku master之后,应用程序将正确启动
但是,当尝试在fb developer中设置webhook时,错误是“无法验证URL”。响应与预期的质询不匹配”,然后对质询给出不同的响应。也就是说,我的URL响应为“Hello world,我似乎正在工作”,而不是数字键
非常感谢您的帮助 您需要将FB指向具有验证功能的路由。您当前正在将FB指向站点根索引
“/”
将应用程序设置中的FB webhook url更改为https://YOUR_DOMAIN.com/webhook
,验证将完成。然后,FB会将您订阅的任何事件发送到您的'/webhook'
路线
如果这不起作用,请注意,您已经将验证令牌硬编码为测试令牌
:
...
if (req.query['hub.verify_token'] === 'test-token') { ...
只有当您将webhook验证令牌设置为“test-token”
时,这才会完成挑战。一个更好的方法是:
...
if (req.query['hub.verify_token'] === process.env.VERIFY_TOKEN ) { ...
在上面的示例中,在尝试验证webhook之前,必须在运行服务器时传入为webhook选择的验证令牌。
在heroku仪表板中,添加
VERIFY_TOKEN
,将您的TOKEN作为配置变量的值。这将使验证令牌无需硬编码即可使用。听起来好像您没有为webhook指定正确的URL…谢谢-这很有效!只需将/webhook添加到url。非常感谢你的帮助。