Facebook 信使 API "URL COULD NOT BE VALIDATED"
Facebook Messenger API "URL COULD NOT BE VALIDATED"
我正在尝试设置 Facebook Messenger API,但在尝试添加 WebHook 时出现此错误:
The URL couldn't be validated. Callback verification failed with the following errors: curl_errno = 60; curl_error = SSL certificate problem: unable to get local issuer certificate; HTTP Status Code = 200; HTTP Message = Connection established
我已经使用他们在教程中提供的代码设置了我的 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);
忘了回答这个问题,但我发现我在我的 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|\|
同样在代码中得到验证:
req.query['hub.verify_token'] === 'o\/ERviEE\/vt0|<E|\|'
然而,从FB收到的值是:o\/ERviEE\/vt0|<E|\|
这很奇怪。似乎没有这样的文档参考讨论 Facebook 如何转义验证令牌等的特殊字符。不确定其他实体是否也会发生这种情况。
结论:验证令牌使用特殊字符需要谨慎一些
因为 Facebook 会转义 webhook 验证令牌的特殊字符。
我正在尝试设置 Facebook Messenger API,但在尝试添加 WebHook 时出现此错误:
The URL couldn't be validated. Callback verification failed with the following errors: curl_errno = 60; curl_error = SSL certificate problem: unable to get local issuer certificate; HTTP Status Code = 200; HTTP Message = Connection established
我已经使用他们在教程中提供的代码设置了我的 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);
忘了回答这个问题,但我发现我在我的 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|\|
同样在代码中得到验证:
req.query['hub.verify_token'] === 'o\/ERviEE\/vt0|<E|\|'
然而,从FB收到的值是:o\/ERviEE\/vt0|<E|\|
这很奇怪。似乎没有这样的文档参考讨论 Facebook 如何转义验证令牌等的特殊字符。不确定其他实体是否也会发生这种情况。
结论:验证令牌使用特殊字符需要谨慎一些
因为 Facebook 会转义 webhook 验证令牌的特殊字符。