spi*_*x4k 4 facebook facebook-ads-api facebook-webhooks facebook-ads facebook-nodejs-business-sdk
这是我第一次发布问题,因此请提供反馈以改进问题。
Facebook webhook 提到,在 webhook 端点可以接收任何事件通知之前,应首先验证端点。
验证请求的文档未提供 API 的响应结构。它只是告诉我们发回 hub.challenge 参数。
当我使用 NodeJS 时,我正在尝试使用下面的代码。但是,它不会验证来自 Facebook 仪表板的 Webhook。
我们应该如何发回响应来验证 webhook?
app.get('/webhook', (req, res) => {
const challenge = req.query['hub.challenge'];
const verify_token = req.query['hub.verify_token'];
if (verify_token === process.env.FACEBOOK_VERIFICATION_TOKEN) {
return res.status(200).send({message: "Success", challenge: challenge});
}
return res.status(400).send({message: "Bad request!"});
})
Run Code Online (Sandbox Code Playgroud)
Facebook 的验证端点要求响应 Content-Type 为 text/html。文档中没有提到这一点;他们应该提供一个结构。您可以设置标头以text/html显式使用。
但是,当您使用express时,您可以直接返回挑战值。
app.get('/webhook', (req, res) => {
const challenge = req.query['hub.challenge'];
const verify_token = req.query['hub.verify_token'];
if (verify_token === process.env.FACEBOOK_VERIFICATION_TOKEN) {
return res.status(200).send(challenge); // Just the challenge
}
return res.status(400).send({message: "Bad request!"});
})
Run Code Online (Sandbox Code Playgroud)
如果您使用 fastify 集:
res.header('Content-Type', 'text/html; charset=utf-8');
return res.send('' + challenge);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1212 次 |
| 最近记录: |