14

我正在尝试设置 Facebook Messenger API,但在尝试添加 WebHook 时出现此错误:

无法验证 URL。回调验证失败,错误如下: curl_errno = 60; curl_error = SSL 证书问题:无法获取本地颁发者证书;HTTP 状态码 = 200;HTTP 消息 = 已建立连接

我已经使用他们在教程中提供的代码设置了我的 NodeJS 服务器。这是网址: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);

4

3 回答 3

5

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

于 2016-06-23T19:00:07.833 回答
0

正在尝试使用强验证令牌设置 FB Messenger webhook 。有点像这样:o\/ERviEE\/vt0|<E|\|

o/ERviEE/vt0|<E|\|  验证令牌集

同样在代码中得到验证:

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

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

o\/ERviEE\/vt0|<E|\|  验证令牌获取

这很奇怪。似乎没有这样的文档参考来讨论 Facebook 如何转义特殊字符以进行验证令牌等。不确定其他实体是否也会发生这种情况。

结论:在使用特殊字符验证令牌时需要谨慎一点。

因为,Facebook 为 webhook 的验证令牌转义了特殊字符。

于 2017-09-30T15:28:49.907 回答
0

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

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

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

于 2017-06-15T06:56:44.160 回答