热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SNS网站中如何获取MSN联系人信息

几乎所有的SNS网站都有[邀请站外好友]加入本站这个功能,当然,我们正在开发的这个名为XXX的网站也不例外,今天学习了一下,把成果向大家做一简单汇报。    这个功能的关键点在于取

几乎所有的SNS网站都有[邀请站外好友]加入本站这个功能,当然,我们正在开发的这个名为XXX的网站也不例外,今天学习了一下,把成果向大家做一简单汇报。

 

    这个功能的关键点在于取得用户的已有联系人列表,并发送邀请函(一般都是电子邮件的形式),在这篇文章里,只涉及怎么样取得MSN中联系人信息,如果大家有兴趣,我会把怎么样取得Gmail、Yahoo等的联系人信息代码也都帖上来。

 

    首先我想到的是参照已有网站的实现方式,如果开心网、校内网、FaceBook等。

 

开心网、校内网:

开心网和校内网的实现方式大致相同,都是输入用户名和密码,程序按照一定的数据格式POST到LIVE网站,获取Ticket,然后取得联系人的信息,以下是屏幕截图。

《SNS网站中如何获取MSN联系人信息》

 

《SNS网站中如何获取MSN联系人信息》

    以上两个网站的共同点是都要求用户输入MSN的用户名和密码,这样有可能造成MSN帐户信息泄漏,虽然都说”不会记录或存储你的密码”,但谁敢保证呢,即使真的不会存储,但用户会有一种抵触心理。

    FaceBook的实现与以上两个网站截然不同,它不要求用户输入密码信息,这样用户就会觉得爽多了,请看下图,密码框并不要求用户填写(Enable=false)

《SNS网站中如何获取MSN联系人信息》 

 

    用户点击[Find Friends]后,会转向Live网站,这样用户就可以放心大胆的输入密码了。

 

《SNS网站中如何获取MSN联系人信息》

 

 

 

点击[Sign In]后,会自动跳转到FaceBook网站,显示用户联系人信息 ,如下图所示。

 

《SNS网站中如何获取MSN联系人信息》

 

 

综合考虑,决定采用facebook的实现方式,MSDN上查找了一下,原来Microsoft发布了Window Live的一系列API,其中有一块是Contacts API,好了,那就开始写代码吧(paipaidi)?

 

第一步:

    申请一个微软云计算的一个Project,访问https://lx.azure.microsoft.com/Cloud/Provisioning/Default.aspx,申请一个类型为Live Services的Project,

 

Application ID:

 0000000048011C34

 

Domain(s):

 www.dpe.com

 

Return URL:

 http://www.dpe.com/

 

Secret Key:

 nazgnMZRWbbgaleiDpvUhG69FKBb5L2v

 

 

第二步:

    下载 Windows Live ID Delegated Authentication SDK 1.2 DEMO,网址为:http://www.microsoft.com/downloads/details.aspx?FamilyId=A2466ABF-9629-42D8-B991-1D3FAF2FE872&displaylang=en,

其中有C#、Java、Perl、PHP、Python、Ruby、VB等多种版本任你选择。

第三步:

   安装下载的文件到指定目录内,默认为C:\Program Files\Windows Live ID\DelAuth

第四步:

    在IIS中新建一个虚拟目录,名称为DelAuth

 

 

第五步:

    修改hosts文件, 你可以修改一下C:\WINDOWS\system32\drivers\etc中的hosts文件,把127.0.0.1映射到一个您刚才申请Project时填写的域名 www.dpe.com

第六步:

    修改Sample1中的Web.Config文件,如下,用申请来的ApplicationID和Secret Key替换文件中相应的值,并根据你的主机及虚拟目录名称,把ReturnUrl改为http://www.dpe.com/delAuth/sample1/delauth-handler.aspx ,Policyurl的值改为http://www.dpe.com/delAuth/sample1/policy.html ,原始的web.Config文件如下:

《SNS网站中如何获取MSN联系人信息》

 

第七步:

    把Sample1中的Default.aspx设置为首页,按如下界面中的URL打开网址

 

《SNS网站中如何获取MSN联系人信息》

 

    其中Click Here中的URL是动态构造的,如果有兴趣,相应的构造代码大家可以研究一下。

点击Click Here就转向Live网站进行登录,登录后自动返回到Web.Config中配置的returnUrl网址,用户登录后,我们可以通过代码取得

WindowsLiveLogin.ConsentToken的值,具体代码如下:

WindowsLiveLogin wll = new WindowsLiveLogin(true);

WindowsLiveLogin.ConsentToken token = wll.ProcessConsent(req.Form);

 

第八步:

取得MSN中的联系人信息

微软提供了允许我们通过REST方式访问contracts服务,需要具备以下两个参数:

The Delegated Authentication token (DAT),即WindowsLiveLogin.ConsentToken

The Location ID (lid),可以通过WindowsLiveLogin.ConsentToken获得

显然,我们前七步做的工作主要是获得以上的两个参数的值,用户登录后,在returnUrl页面中,我们可以写如下代码

 

 

public string GetContacts(WindowsLiveLogin.ConsentToken ct)

{

 

string lid = ct.LocationID;

 

string delegatedToken = ct.DelegationToken;

// Construct the request URI.

string uri = “https://livecontacts.services.live.com/@L@” + lid + “/rest/LiveContacts/Contacts/”;

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);

request.UserAgent = “Windows Live Data Interactive SDK”;

request.COntentType= “application/xml; charset=utf-8”;

request.Method = “GET”;

 

// Add the delegation token to a request header.

request.Headers.Add(“Authorization”, “DelegatedToken dt=\”” + delegatedToken + “\””);

 

//Issue the HTTP GET request to Windows Live Contacts.

HttpWebResponse respOnse= (HttpWebResponse)request.GetResponse();

 

//The response body is an XML stream. Read the stream into an XmlDocument.

XmlDocument cOntacts= new XmlDocument();

contacts.LoadXml(new StreamReader(response.GetResponseStream()).ReadToEnd());

 

//Use the document. For example, display contacts.InnerXml.

return contacts.InnerXml;

 

//Close the response.

//response.Close();

}

我们可以针对返回的XML字符串进行分析,获取你需要的Contact格式,并加以利用。

附件中的代码包完整实现了这一功能,大家可以下载

http://files.cnblogs.com/lichl/DelAuth.rar

 


推荐阅读
  • 在使用SSH框架进行项目开发时,经常会遇到一些常见的问题。例如,在Spring配置文件中配置AOP事务声明后,进行单元测试时可能会出现“No Hibernate Session bound to thread”的错误。本文将详细探讨这一问题的原因,并提供有效的解决方案,帮助开发者顺利解决此类问题。 ... [详细]
  • 在JavaWeb项目架构中,NFS(网络文件系统)的实现与优化是关键环节。NFS允许不同主机系统通过局域网共享文件和目录,提高资源利用率和数据访问效率。本文详细探讨了NFS在JavaWeb项目中的应用,包括配置、性能优化及常见问题的解决方案,旨在为开发者提供实用的技术参考。 ... [详细]
  • HTML 页面中调用 JavaScript 函数生成随机数值并自动展示
    在HTML页面中,通过调用JavaScript函数生成随机数值,并将其自动展示在页面上。具体实现包括构建HTML页面结构,定义JavaScript函数以生成随机数,以及在页面加载时自动调用该函数并将结果呈现给用户。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • 本文详细介绍了在 Android 7.1 系统中调整屏幕分辨率和默认音量设置的方法。针对系统默认音量过大的问题,提供了具体的步骤来降低系统、铃声、媒体和闹钟的默认音量,以提升用户体验。此外,还涵盖了如何通过系统设置或使用第三方工具来优化屏幕分辨率,确保设备显示效果更加清晰和流畅。 ... [详细]
  • 2021年Java开发实战:当前时间戳转换方法详解与实用网址推荐
    在当前的就业市场中,金九银十过后,金三银四也即将到来。本文将分享一些实用的面试技巧和题目,特别是针对正在寻找新工作机会的Java开发者。作者在准备字节跳动的面试过程中积累了丰富的经验,并成功获得了Offer。文中详细介绍了如何将当前时间戳进行转换的方法,并推荐了一些实用的在线资源,帮助读者更好地应对技术面试。 ... [详细]
  • 深入浅析JVM垃圾回收机制与收集器概述
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》的阅读心得进行整理,详细探讨了JVM的垃圾回收机制及其各类收集器的特点与应用场景。通过分析不同垃圾收集器的工作原理和性能表现,帮助读者深入了解JVM内存管理的核心技术,为优化Java应用程序提供实用指导。 ... [详细]
  • 在Java分层设计模式中,典型的三层架构(3-tier application)将业务应用细分为表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这种分层结构不仅有助于提高代码的可维护性和可扩展性,还能有效分离关注点,使各层职责更加明确。通过合理的设计和实现,三层架构能够显著提升系统的整体性能和稳定性。 ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
  • 每日前端实战:148# 视频教程展示纯 CSS 实现按钮两侧滑入装饰元素的悬停效果
    通过点击页面右侧的“预览”按钮,您可以直接在当前页面查看效果,或点击链接进入全屏预览模式。该视频教程展示了如何使用纯 CSS 实现按钮两侧滑入装饰元素的悬停效果。视频内容具有互动性,观众可以实时调整代码并观察变化。访问以下链接体验完整效果:https://codepen.io/comehope/pen/yRyOZr。 ... [详细]
  • 如何精通编程语言:全面指南与实用技巧
    如何精通编程语言:全面指南与实用技巧 ... [详细]
  • 本文深入解析了Java 8并发编程中的`AtomicInteger`类,详细探讨了其源码实现和应用场景。`AtomicInteger`通过硬件级别的原子操作,确保了整型变量在多线程环境下的安全性和高效性,避免了传统加锁方式带来的性能开销。文章不仅剖析了`AtomicInteger`的内部机制,还结合实际案例展示了其在并发编程中的优势和使用技巧。 ... [详细]
  • 美团优选推荐系统架构师 L7/L8:算法与工程深度融合 ... [详细]
  • Vue 实战基础教程第9讲:深入理解计算属性与侦听器的高效使用
    Vue 实战基础教程第9讲:深入理解计算属性与侦听器的高效使用 ... [详细]
author-avatar
司文龙2502933797
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有