新浪微博私信,即时聊天接口研究
由于要写个chrome插件来进行发发私信什么的 你懂得,,,,
由于是个插件,就不要去研究模拟登陆啦,cookie问题不用考虑,可以用ajax任意访问weibo的所有地址
但是如果两人从来没有交流过,那么第一次发私信是要过验证码的
但是有种情况不需要,那就是用新浪的im,就是右下角的即时聊天的那个玩意,研究发现,如果需要调用者个即时聊天的接口,需要如下几个步骤
第一步: 握手 handleshake
这是im的根地址,看前边的数字,估计有很多服务器,咱们随便选一个,就它了
http://11.79.web1.im.weibo.com/im
ajax,GET发送内容到该地址
由于新浪是用script来模拟一个get来跨域请求这个接口的,所以每次返回的内容,自动将返回内容对你设置的回调函数进行执行,我们在ajax里只要eval一下即可,比如:
callback([{"id":"1","minimumVersion":"1.0","supportedConnectionTypes":["websocket","callback-polling","long-polling"],"successful":true,"channel":"/meta/handshake","ext":{"timesync":{"ts":1377155460536,"tc":1377155466453,"p":0,"a":5917},"ack":true},"clientId":"1n8zz1g60ncoj1hxuumbuutbw9f5ri","version":"1.0"}])
我们只要事先定义一个callback函数即可,这一步,我们得到一个重要的参数,那就是clientId,保存下来。
ps:看上边返回的数据,还支持websocket,但是不知道具体的协议是什么,没法调用
第二步:连接 connect
要想发送消息,还需要连接
ajax,GET发送如下内容到根地址
注意callback的用法上边讲过了,上边的数据,注意那个clientId,是第一步的握手得到的
连接之后的返回内容,基本没啥用,如下:
callback([{"id":"3","successful":true,"advice":{"interval":0,"reconnect":"retry","timeout":180000},"channel":"/meta/connect"}])
告诉你是否成功,等等
第三步:注册 subscribe
也可以翻译成出席,等等,仁者见仁
ajax,GET发送如下数据
可以看到message是个数组,意思是其实每次可以连续发送多条信息,上边的第一条是个注册信息,紧接着应该是一条我上线啦的信息,可以删除
第四部:就可以发送消息咯