Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1261621
  • 博文数量: 315
  • 博客积分: 10397
  • 博客等级: 上将
  • 技术积分: 3731
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-07 21:21
文章分类

全部博文(315)

文章存档

2015年(10)

2014年(3)

2013年(2)

2012年(8)

2011年(8)

2010年(29)

2009年(59)

2008年(77)

2007年(119)

分类:

2009-03-25 10:27:07

在网上看到取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) 打开  根据提示,注册一个windows live id以获得一个windows application id,注册进去会返回到一个Azure Services Developer Portal的页面,类似我下面的抓图:

MSN1

 

我以前注册了两个application id (现在已经改名叫Project了),所以显示了 两个Project。对于大家应该是选择New Project /Live Services: Existing APIs 获得一个application id 。如下图:

http://p.blog.csdn.net/images/p_blog_csdn_net/79720699/EntryImages/20090319/msn2.gif

这里说明一下,Domain要填写你要使用该服务的网站域名,Reetrun URL是当登录验证MSN帐号后将一些数据返回给你程序的URL,这个URL以后真是存在。提交成功后会获得如下信息:

Application ID: 00163FFF8000A800
Domain(s):
Return URL:
Secret Key: qo8NA7ClFNxd1cNmflmPRlQGwUlvPlR1


 这些信息在下面的步骤会用到.

 

 

(2) 下载我的源码(建议你最好下载尝试官方提供的SDK,里面包含了简单例子),我已经封装好了代码,将代码放到Reetrun URL相应的目录,修改 config.xml 中值为你刚才申请所填写的密钥,Domain和Reetrun URL等。

然后index.php里输入相应的msn帐号密码 ,访问此index.php就可以取得联系人了。

 

使用此方式需要PHP5版本(PHP4未测),另外还需开启PHP的CURL扩展.这种方式可靠性高,速度还可以,最多执行4此CURL操作。最后希望此源码对大家有帮助.

 

 源码下载地址:

阅读(1343) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-04-16 12:52:36

你的php需要安装mcrypt扩展

chinaunix网友2009-04-12 17:58:29

Fatal error: Call to undefined function mcrypt_decrypt() in E:\php\d\windowslivelogin.php on line 1241 这个错误