最后,Facebook为他们的信使API for their messenger推出了API。这将允许我们创建聊天机器人。
In getting started guide,我需要设置webhook。这需要驻留在特定域中的Web服务器,并且必须使用SSL连接。
我有VPS,它有静态IP。我制作了自签名证书并创建了使用此证书的简单Node JS Web服务器。首先,我需要验证webhook的令牌:
app.get('/webhook/', function (req, res) {
if (req.query['hub.verify_token'] === '<validation_token>') {
res.send(req.query['hub.challenge']);
}
res.send('Error, wrong validation token');
})
然后我启动了此服务器应用程序,在我的Facebook应用程序仪表板中,我点击验证并保存按钮。
它会抛出此错误消息:
这意味着 Facebook不想接受我自己签署的证书。
这带来了几个问题:
我是否需要使用SSL证书仅由证书颁发机构提供才能使用Facebook Messenger?
使用Facebook Messenger比使用Telegram困难得多。
答案 0 :(得分:9)
对于刚测试,您可以使用localtunnel。 https://localtunnel.me/
答案 1 :(得分:7)
我将my bot部署到Heroku,他们随时提供HTTPS连接。对于本地开发,我使用ngrok
,它也支持HTTPS转发。
对于新来者,我为那些想要开始使用Facebook Messenger(Bot)API的人写了this small tutorial,从第一行代码到Heroku部署。我发现Heroku非常适合这样的项目,因为我使用了Python flask
+ gunicorn
,我需要的所有部署都需要花费5分钟来设置,Heroku负责其余的工作
答案 2 :(得分:6)
您可以使用cloudflare获取https而不是自签名。或者您可以使用https://letsencrypt.org
答案 3 :(得分:3)
摘自here:
新的webhook订阅必须使用自v2.5起的安全HTTPS回调URL。使用下一版本的Graph API,我们将停止向非HTTPS回调URL发送更新 如果您需要有关为回调URL设置HTTPS的更多信息,请查看Let's Encrypt的入门指南和Digicert的SSL证书安装说明。
来自here,和@saturngod一样说:
Facebook不接受自签名证书。 Letsencrypt证书完美无缺。
答案 4 :(得分:0)
验证网络连接使用: -
$_REQUEST["hub_token"] and $_REQUEST["hub_challenge"];
首先验证令牌到您的页面令牌,然后打印: -
echo $_REQUEST["hub_challenge"];
exit;
答案 5 :(得分:0)
我在Apache上使用Comodo SSL时遇到了同样的错误。在我的情况下,我错过了SSLCertificateChainFile,只需要在我的虚拟主机配置中上传该捆绑文件和文件路径并重新加载apache。以下是安装从ssls.com https://helpdesk.ssls.com/hc/en-us/articles/203482651-How-to-install-a-SSL-certificate-on-Apache购买的comodo SSL的链接。