在网上看到取MSN联系人的一些做法,个人发现大多做法并非使用官方的方式,下面我愿共享我的实现方式。
一般取MSN联系人一般有3种方式:
1种: 通过MSN协议取得联系人,这种方式在网上有很多,取得数据比较稳定,但有个缺点,使用这种方式会把正在线的MSN用户T掉。
2 种:通过模拟登录windows live ID(以前是hotmail.com邮箱),里面会有联系人列表,这种方式特点是速度快,但不稳定,需要经常维护代码以保持于服务器一致,另外所取到的联系人会MSN中的有出入,另外对于新注册的MSN用户,如果没有开通windows live 那么会无法取到联系人。
3 种:通过微软前几年发布的WEB服务获得联系人,过程是这样的,将MSN用户名和密码组装成一个XML文件然后PUT给https://dev.login.live.com/wstlogin.srf,然后会获得一个加密验证用的wsse:BinarySecurityToken ,最后再把这个wsse:BinarySecurityToken 在网页头部Authorization:WLID1.0 t="BinarySecurityToken " 给https://cumulus.services.live.com/" . $liveid . "/LiveContacts/Contacts/.这种在以前很稳定,速度也快,但微软最近应该是变更或者取消了该服务,转而使用目前流行的REST框架。
下面我用了另外一种方式也就是前面说REST方式,其实是Windows Live ID Delegated Authentication SDK 。
步骤如下:
(1) 打开https://msm.live.com/app/ 根据提示,注册一个windows live id以获得一个windows application id,注册进去会返回到一个Azure Services Developer Portal的页面,类似我下面的抓图:
我以前注册了两个application id (现在已经改名叫Project了),所以显示了 两个Project。对于大家应该是选择New Project /Live Services: Existing APIs 获得一个application id 。如下图:
这里说明一下,Domain要填写你要使用该服务的网站域名,Reetrun URL是当登录验证MSN帐号后将一些数据返回给你程序的URL,这个URL以后真是存在。提交成功后会获得如下信息:
Application ID: | 00163FFF8000A800 |
Domain(s): | www.example.com |
Return URL: | http://www.example.com/delauth-handler.php |
Secret Key: | qo8NA7ClFNxd1cNmflmPRlQGwUlvPlR1 |
这些信息在下面的步骤会用到.
(2) 下载我的源码(建议你最好下载尝试官方提供的SDK,里面包含了简单例子),我已经封装好了代码,将代码放到Reetrun URL相应的目录,修改 config.xml 中值为你刚才申请所填写的密钥,Domain和Reetrun URL等。
然后index.php里输入相应的msn帐号密码 ,访问此index.php就可以取得联系人了。
使用此方式需要PHP5版本(PHP4未测),另外还需开启PHP的CURL扩展.这种方式可靠性高,速度还可以,最多执行4此CURL操作。最后希望此源码对大家有帮助.
源码下载地址:http://power2php2.googlecode.com/files/windowsliveContacts1.0.zip