几乎所有的SNS网站都有[邀请站外好友]加入本站这个功能当然我们正在开发的这个名为XXX的网站也不例外今天学习了一下把成果向大家做一简单汇报 这个功能的关键点在于取得用户的已有联系人列表并发送邀请函(一般都是电子邮件的形式)在这篇文章里只涉及怎么样取得MSN中联系人信息如果大家有兴趣我会把怎么样取得GmailYahoo等的联系人信息代码也都帖上来 首先我想到的是参照已有网站的实现方式如果开心网校内网FaceBook等 开心网校内网 开心网和校内网的实现方式大致相同都是输入用户名和密码程序按照一定的数据格式POST到LIVE网站获取Ticket然后取得联系人的信息以下是屏幕截图 以上两个网站的共同点是都要求用户输入MSN的用户名和密码这样有可能造成MSN帐户信息洩漏虽然都说不会记录或存储你的密码但谁敢保证呢即使真的不会存储但用户会有一种抵触心理 FaceBook的实现与以上两个网站截然不同它不要求用户输入密码信息这样用户就会觉得爽多了请看下图密码框并不要求用户填写(Enable=false) 用户点击[Find Friends]后会转向Live网站这样用户就可以放心大胆的输入密码了 点击[Sign In]后会自动跳转到FaceBook网站显示用户联系人信息 如下图所示 综合考虑决定采用facebook的实现方式MSDN上查找了一下原来Microsoft发布了Window Live的一系列API其中有一块是Contacts API好了那就开始写代码吧(paipaidi)? 第一步 申请一个微软云计算的一个Project访问 ioning/Defaultaspx申请一个类型为Live Services的Project Application ID: C Domain(s): Return URL: Secret Key: nazgnMZRWbbgaleiDpvUhGFKBbLv 第二步 下载 Windows Live ID Delegated Authentication SDK DEMO网址为x?FamilyId=AABFDBDFAFFE&displaylang=en 其中有C#JavaPerlPHPPythonRubyVB等多种版本任你选择 第三步 安装下载的文件到指定目录内默认为C:\Program Files\Windows Live ID\DelAuth 第四步 在IIS中新建一个虚拟目录名称为DelAuth 第五步 修改hosts文件 你可以修改一下C:\WINDOWS\system\drivers\etc中的hosts文件把映射到一个您刚才申请Project时填写的域名 第六步 修改Sample中的WebConfig文件如下用申请来的ApplicationID和Secret Key替换文件中相应的值并根据你的主机及虚拟目录名称把ReturnUrl改为handleraspx Policyurl的值改为 原始的webConfig文件如下 第七步 把Sample中的Defaultaspx设置为首页按如下界面中的URL打开网址 其中Click Here中的URL是动态构造的如果有兴趣相应的构造代码大家可以研究一下 点击Click Here就转向Live网站进行登录登录后自动返回到WebConfig中配置的returnUrl网址用户登录后我们可以通过代码取得 WindowsLiveLoginConsentToken的值具体代码如下 WindowsLiveLogin wll = new WindowsLiveLogin(true); WindowsLiveLoginConsentToken token = wllProcessConsent(reqForm); 第八步 取得MSN中的联系人信息 微软提供了允许我们通过REST方式访问contracts服务需要具备以下两个参数 The Delegated Authentication token (DAT)即WindowsLiveLoginConsentToken The Location ID (lid)可以通过WindowsLiveLoginConsentToken获得 显然我们前七步做的工作主要是获得以上的两个参数的值用户登录后 在returnUrl页面中我们可以写如下代码 public string GetContacts(WindowsLiveLoginConsentToken ct) string lid = ctLocationID; string delegatedToken = ctDelegationToken; // Construct the request URI string uri = @L@ + lid + /rest/LiveContacts/Contacts/; HttpWebRequest request = (HttpWebRequest)WebRequestCreate(uri); requestUserAgent = Windows Live Data Interactive SDK; requestContentType = application/xml; charset=utf; requestMethod = GET; // Add the delegation token to a request header requestHeadersAdd(Authorization DelegatedToken dt=\ + delegatedToken + \); //Issue the HTTP GET request to Windows Live Contacts HttpWebResponse response = (HttpWebResponse)requestGetResponse(); //The response body is an XML stream Read the stream into an XmlDocument XmlDocument contacts = new XmlDocument(); contactsLoadXml(new StreamReader(responseGetResponseStream())ReadToEnd()); //Use the document For example display contactsInnerXml return contactsInnerXml; //Close the response //responseClose(); } 我们可以针对返回的XML字符串进行分析获取你需要的Contact格式并加以利用 |