gpt4 book ai didi

node.js - Facebook 开发者问题 - 'URL couldn' 待验证。响应与预期挑战不符'

转载 作者:太空宇宙 更新时间:2023-11-03 23:26:15 24 4
gpt4 key购买 nike

我使用以下文件启动了 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com