我使用以下文件启动了 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-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
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"
}
}
Proc文件
web: node app.js
<小时/>
我使用以下命令安装了node.js依赖项:npm install express request body-parser --save
在git push heroku master
之后,应用程序正确启动。
但是,当尝试在 Facebook Developer 中设置 Webhook 时,错误是“无法验证 URL”。响应与预期挑战不匹配,然后给出对挑战的不同响应。也就是说,我的 URL 响应为“Hello world,我似乎正在工作”而不是数字键。
非常感谢您的帮助!
最佳答案
您需要将FB指向其中包含验证功能的路由。您当前似乎将 FB 指向网站根索引 '/'
。
将应用设置中的 FB webhook 网址更改为 https://YOUR_DOMAIN.com/webhook
即可完成验证。然后,FB 会将您订阅的任何事件发送到您的 '/webhook'
路由。
如果这不起作用,请注意您已将验证 token 硬编码为 test-token
:
...
if (req.query['hub.verify_token'] === 'test-token') { ...
只有在 'test-token'
是您设置的 webhook 验证 token 时,这才会完成挑战。在我看来,更好的方法如下:
...
if (req.query['hub.verify_token'] === process.env.VERIFY_TOKEN ) { ...
在上面的示例中,在尝试验证 Webhook 之前,您必须在运行服务器时传入为 Webhook 选择的验证 token 。
在您的 Heroku 仪表板中,将 VERIFY_TOKEN
添加到您的配置变量中,并将您的 token 作为值。这将使验证 token 无需硬编码即可使用。
关于node.js - Facebook 开发者问题 - 'URL couldn' 待验证。响应与预期挑战不符',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43880550/