$jaxl = new JAXL(array(
'user'=>'akooshesh@chat.facebook.com',
'pass'=>'', // Not required, we will use user session key instead
'host'=>'chat.facebook.com',
'domain'=>'chat.facebook.com'
));
function getFacebookKey() {
global $session;
global $app_secret,$api_key;
return array(
$app_secret, // Your application secret key
$api_key, // Your application api key
$session['session_key'] // Connecting user session key
);
}
function doAuth($mechanism) {
global $jaxl;
$jaxl->auth("X-FACEBOOK-PLATFORM");
}
function postAuth($payload, $jaxl) {
var_dump($jaxl);
$jaxl->sendMessage('arian.kooshesh@chat.facebook.com', 'what up');
}
// Register callback on required hook (callback'd method will always receive 2 params)
$jaxl->addPlugin('jaxl_post_auth', 'postAuth');
$jaxl->addPlugin('jaxl_get_facebook_key', …Run Code Online (Sandbox Code Playgroud) 我想在网页中实现FB-chat.我在Facebook API中环顾四周,发现只允许使用XMPP进行聊天.首先,我尝试使用Pidgin连接到FB-chat,它运行正常.我的结论是FB-chat服务器充当XMPP服务器.这是真的?
我读到了关于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或者它之间是否有一个XMPP服务器,为什么?
我很感激任何问题的答案.请建议一些如何实现所有这些东西的链接.我对这一切都是全新的,这让我迷失了一个多星期了.
如果有人已经这样做了,请帮忙.非常感谢.
沙巴
Facebook的聊天窗口如何保持打开状态并在同一个位置浏览页面时
请在回答之前:
1 - 我非常了解Ajax,Facebook目前的实现并不像过去那样普通的Ajax.
2 - 页面的URL完全不是哈希部分,而是整个页面重新加载,而不是聊天窗口或面板.
我发现URL通过这个JS部分发生了变化:
history.pushState({},"New Title Goes Here","http://facebook.com/Something");
Run Code Online (Sandbox Code Playgroud)
但是数据本身怎么样呢?Firebug或Chrome中的Network-> XHR在XHR中不显示任何内容.所以我猜这不是Ajax.
我presence-channels在Pusher的平台上有点困惑,因为我正在从头开始构建一个聊天应用程序.现在,我知道你们中的一些人已经看到了大量的"实时聊天应用程序"主题,但是,我正在寻找点对点聊天,而不是整个站点的全球性事物.更像是一个Facebook聊天,你可以在那里一对一.
现在,我已经在PubNub的演示中看到了一个例子(名为Babel),但是,这个东西远非我正在寻找的东西,因为我已经在控制台中检查了请求,即使它没有显示,在其他之间发送的消息用户也显示在我的网络请求日志中,因为它在JS中被过滤而不是服务器端,这不是我想要的.
所以,回到主题,我知道频道/私人频道/在线频道功能,我决定这样做:
打开应用程序时,每个用户都会记录到他的private-user_id频道(创建,如果它已经不存在).
同时(在打开应用程序时)user1订阅一个presence-global频道,如果朋友在线,其他人会跟踪.
当别人想送他一个消息,例如user2到user1,他赞同private-1其后的JavaScript将处理该事件.
现在,我知道这有什么不对,因为..如果user3会发送消息给user1他订阅,private-user1所以我猜他会看到user2发送消息时触发的事件user1,对吧?或者我弄错了?
我在他们的文档中读到presence频道实际上是一个private频道扩展,所以我现在在想..为什么再使用private频道,然后,我怎么能通知我在线的所有朋友.
但是,在他们的文档中出现了一些其他内容,告诉我channels提供两个重要的事情(其中包括),首先是a way of filtering data第二个,第二个是a way of controlling access.
我怎么应该"过滤数据",因为他们的文档中没有链接,或者更好,你在一对一的聊天中有什么想法.如果我的所有文档都错了,我很抱歉,我看了他们的示例应用程序,但没有一个使用我正在寻找的一对一技术.
我是Pusher和socket连接等的新手,但我已经学会了如何验证,如何创建,检测和处理频道中的事件,我可以创建一个与在线成员进行简单的全局聊天,但是,当涉及到私人频道我对如何为两个用户创建单独的频道感到困惑.
提前致谢 !
嗨,我打算开发一个聊天客户端,可以连接到gtalk facebook等...我决定使用smack API和openfire ..
但是我对如何在openfire服务器上使用它几乎没有什么指导.
openfire是否提供基本的用户界面,如登录框聊天窗口等...
我需要知道如何使用openfire插入或使用smack
谢谢:)
我在正文中实现以下代码时出错:
<div id="fb-root"></div>
<div id="fb-customer-chat" class="fb-customerchat">
</div>
<script>
var chatbox = document.getElementById('fb-customer-chat');
chatbox.setAttribute("page_id", "YOURPAGEIDHERE");
chatbox.setAttribute("attribution", "biz_inbox");
window.fbAsyncInit = function() {
FB.init({
xfbml : true,
version : 'v12.0'
});
};
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = 'https://connect.facebook.net/en_US/sdk/xfbml.customerchat.js';
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
Run Code Online (Sandbox Code Playgroud)
我已经将 FB Advanced Messaging 中的域列入白名单。我不确定我是否遗漏了代码中的其他内容。
我正在开发一个iOS应用程序,允许用户登录Facebook,然后使用Facebook Chat API向他的朋友发送消息.
要连接我的Facebook帐户,我正在使用xmppframework(https://github.com/robbiehanson/XMPPFramework).连接已经建立,我可以发送消息给我的朋友.但是,当重新打开对话(Facebook网站,信使)时,该消息将不再可用,并显示一条新消息:"此消息不再可用,因为它被识别为滥用或标记为垃圾邮件".
我不知道发生了什么.我已经尝试检查权限,跟踪身份验证流程,我发现没有任何异常.
有人知道我要做些什么来避免这种情况吗?
我正试图在Android上实现一个简单的Facebook聊天应用程序.它允许用户登录,之后应用程序打开一个新的ListActivity枚举用户的在线联系人,点击一个项目,另一个Activity打开他们的对话将发生的地方.
调用用户登录的第一个屏幕MainActivity.它包含两个EditTexts:一个用于FB用户名,另一个用于密码.还有两个按钮:清除,清空EditTexts,然后单击确定,执行以下AsyncTask new LoginTask().execute():
class LoginTask extends AsyncTask<Void, Void, Void> {
private ProgressDialog loading;
@Override
protected void onPreExecute() {
loading = ProgressDialog.show(MainActivity.this, "", "Loading...");
}
@Override
protected Void doInBackground(Void... params) {
// setup XMPP connection
ConnectionConfiguration config = new ConnectionConfiguration(
"chat.facebook.com", 5222, "chat.facebook.com");
config.setDebuggerEnabled(true);
config.setSASLAuthenticationEnabled(true); // TRUE for fb
conn = new XMPPConnection(config);
try {
// attempt login
conn.connect();
SASLAuthentication.supportSASLMechanism("PLAIN", 0);
conn.login(login_field.getText().toString(),
pwd_field.getText().toString(), "");
Log.d("TRACE", "isAuthenticated? " + conn.isAuthenticated()); …Run Code Online (Sandbox Code Playgroud) 我在互联网上挖掘了很多,但作为新手,却做不了多少.我总结了以下内容:Facebook Chat可以通过两个身份验证(通过Facebook Chat API官方文档)使用:
1> X-FACEBOOK-PLATFORM 2> DIGEST-MD5
1> X-FACEBOOK-PLATFORM方法有很少的文档,没有一个是官方的,最接近使用 pyfacebook和pyxmpp(官方的facebook chat api页面最后有一个参考).除了因此遭遇的调试问题之外,将两者实现为GAE是另一个令人头痛的问题.尽管如此,创建应用程序并使用其在某些资源中所述的ID也不是问题.我在riccomini.name/Topics/Web/GoogleAppEngine/FacebookConnect/上发现了pyfacebook的一个不错的GAE演练
2> DIGEST-MD5是用户名 - 密码的常用方法,可以由任何xmpp客户端执行.所以我虽然我可以使用像xmpppy这样最适合我的XMPP python客户端库(因为我不需要高级功能)
对我的问题进行了直言不讳:我的推理是否正确?我正在考虑通过方法2(我很清楚MD5加密密码涉及的安全风险,请不要提醒我).我没有找到使用xmpppy和GAE的依据,所以我继续正确吗?
任何人都可以为我提供与GAE一起使用的xmpppy的参考吗?
(如果我不清楚,我很抱歉.不能帮忙,我不是硅谷工程师,而是一个15岁的简单学生)