XMPP连接人人网

seesmic-as3-xmppXMPP在ActionScript脚本上的一个实现。或许更加出名的是xiff这个框架,但是目前它并不支持TLS加密,所以需要要TLS支持的时候,更好用的是seesmic-as3-xmpp

人人网的IM工具校内通是基于XMPP协议进行通信的,根据网络上各路神仙的指示,使用基于XMPP框架的API可以很方便的更新一条状态。那么,在我使用桌面工具Twitter Air更新twitter的时候也可以同步更新到人人网,虽然人人网提供了REST API供应用程序调用,但是它们的验证机制明显需要花费更多的时间。

要想成功地连接到人人网,账号密码是必不可少的,人人网用户注册账号是Email地址,Email地址前的用户名无法保证唯一性,所以人人网用户都有一个额外的数字标识,就像QQ号一样,登陆之后可以从浏览器地址中得到该标识,例如http://www.renren.com/Home.do?id=9527这个用户的ID是9527。在进行XMPP连接前,要设置连接的JID, PASSWORD和SERVER三个值,RFC 3920中规定一个完整的JID应该是id@domain/resource这样一个形式,resource可以作为一个账户多处登陆的会话ID。按照这个规定,人人网用户9527的JID则是9527@talk.xiaonei.com。

下面在AIR中试着更新人人网的状态。打开Flash Builder新建一个AIR工程,将seesmic-as3-xmpp加入到编译路径,工程代码大致如下(MXML省略):

01import com.hurlant.crypto.tls.TLSConfig;
02import com.hurlant.crypto.tls.TLSEngine;
03import com.hurlant.crypto.tls.TLSEvent;
04import com.hurlant.crypto.tls.TLSSocket;
05import com.seesmic.as3.xmpp.XMPP;
06import com.seesmic.as3.xmpp.XMPPEvent;
07  
08var xmpp:XMPP;
09private function init():void{
10    xmpp=new XMPP("USER_ID@talk.xiaonei.com","USER_PASSWORD","talk.xiaonei.com");
11    xmpp.addEventListener(XMPPEvent.SESSION, handleSession,false,0,true);
12    xmpp.setupTLS(TLSEvent,TLSConfig,TLSEngine,TLSSocket);
13    xmpp.connect();
14}
15private function handleSession(e:XMPPEvent):void {
16    var status:String="a presence sent by AIR using XMPP protocol";
17    xmpp.sendPresence(status);
18}

设置好正确的ID和密码,编译运行,然后登陆人人网就会发现状态已经更新了。have fun!

posted @ 2012-05-22 19:58  sfshine  阅读(668)  评论(0编辑  收藏  举报