Facebook Messenger API“URL无法validation”

我试图设置Facebook信使API,当我尝试添加WebHook时,出现此错误:

该url无法validation。 回叫validation失败,出现以下错误:curl_errno = 60; curl_error = SSL证书问题:无法获取本地签发者证书; HTTP状态码= 200; HTTP消息=连接已build立

我已经使用教程中提供的代码设置了我的NodeJS服务器。 这是url: https : //stackoverload.me/chatter/webhook

编辑这里的决议(有人想看代码):

var express = require('express'); var fs = require('fs'); var https = require('https'); var app = express(); app.use(express.static('public')); // SSL https.createServer( { ca: fs.readFileSync(__dirname + '/server.ca'), key: fs.readFileSync(__dirname + '/server.key'), cert: fs.readFileSync(__dirname + '/server.cert') } , app).listen(443, function() { console.log('Server is now running.'); }); // HTTP redirect to SSL express() .get('*', function(req,res){ res.redirect('https://example.com' + req.url) }) .listen(80); 

忘了回答这个问题,但是我发现我添加了一个ca文件和参数给我的https服务器,然后Facebook接受了它。

您可以通过以下shell使用链接证书:

cat www.example.com.crt bundle.crt > www.example.com.chained.crt

http://nginx.org/en/docs/http/configuring_https_servers.html#chains

正试图用一个强大的validation令牌设置FB信使webhook 。 有点像这样: o\/ERviEE\/vt0|<E|\|

O / ERviEE / VT0 | <E | \ |验证令牌集

代码中已经validation了这一点:

 req.query['hub.verify_token'] === 'o\/ERviEE\/vt0|<E|\|' 

但是,从FB接收到的值是: o\\/ERviEE\\/vt0|<E|\\|

ø\ / ERviEE \ / VT0 | <E | \ |验证令牌获得

这很奇怪 这里似乎没有任何文档参考,它谈论了Facebook如何为validation令牌或特定字符转义特殊字符。 不知道这是否也发生在其他实体上。

结论:在使用特殊字符作为validation令牌时需要谨慎一些。

因为,Facebook为webhooks的validation令牌转义特殊字符。