我读到了关于XMPP,似乎应该在客户端和服务器之间建立一个开放的TCP连接来交换XML节,这是不可能从网站(通过JavaScript和没有插件),因为只有http请求/响应可以交换,那里没有TCP连接.这意味着中间应该存在某种代理,并且对于身份验证,FB API建议使用X-FACEBOOK-PLATFORM SASL(不是DIGEST MD5,因为有代理).我没有找到明确的教程或步骤如何这样做,这里的帮助表示赞赏.
关于来自网络或浏览器的XMPP客户端的更多研究,我看到我应该使用名为Strophe的库(基于BOSH协议),在其他答案中使用一种名为Punjab的连接管理器.我读到了这个BOSH协议,它似乎是解决方案,但在某些地方我发现它不允许在FB中(我不确定这个信息有多正确).我试图设置这些,但我完全困惑如何开始和我真正应该做的事情.
对于strophe,我没有找到一个真正的教程如何实现它,并且在我发现,他们建议首先设置像ejabberd的jabber服务器(我没有得到它的需要).
我的问题是:
有人可以建议我应该实现的架构来实现我的目标吗?
那么会有:网页 – >(HTTP) – > Strophe – > (TCP) – > FB-chat OR它之间会有一个XMPP服务器,为什么?
我很感激任何问题的答案.请建议一些如何实现所有这些内容的链接.我对这一切都是全新的,这让我迷失了一个多星期了.
如果有人已经这样做了,请帮忙.
非常感谢.
沙巴
解决方法
Jappix mini(使用JSJAC.js库)< - >我的服务器上的node.js上的node-xmpp-bosh< - > Facebook服务器.
Jappix mini很难找到,但它似乎是迄今为止最好的开源聊天栏,所以值得一提.
我还没有完成所有设置,但如果我取得进展,将在此处更新.主要问题是如何使JSJAC使用Facebook API Key身份验证.我找不到任何信息或示例,但我发现这个插件可以适应strophe库:
https://github.com/rubenjgarciab/turedsocial/blob/master/strophe-plugins/src/facebook.js
最后,你不能在javascript中包含你的facebook密钥(因为这是一个秘密!)所以你需要使用Facebook REST API auth.promoteSession服务器端来生成会话密钥,可以在javascript中使用它来签署X -FACEBOOK-PLATFORM auth请求.
希望有所帮助,如果/当我开始工作时,我会添加更多.