我正在尝试设置Facebook messenger API,当我尝试添加WebHook时,我收到此错误:
无法验证URL . 回调验证失败,出现以下错误:curl_errno = 60; curl_error = SSL证书问题:无法获得本地颁发者证书; HTTP状态代码= 200; HTTP消息=已 Build 连接
我是've setup my NodeJS server using the code they provided in the tutorial. Here'的网址: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);
3 回答
忘了回答这个,但我发现我在我的https服务器上添加了一个ca文件和参数,然后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
试图使用强验证令牌setup FB messenger webhook . 有点像这样:
o\/ERviEE\/vt0|<E|\|
代码中已经验证了相同的内容:
但是,从FB收到的值是:
o\\/ERviEE\\/vt0|<E|\\|
This is strange . 似乎没有这样的文档参考,其中讨论了Facebook如何逃避用于验证令牌或类似的特殊字符 . 不确定其他实体是否也会发生这种情况 .
结论:使用特殊字符验证令牌时需要谨慎一些 .
因为,Facebook逃脱了webhooks验证令牌的特殊字符 .