您的位置:首页 > 其它

SNS里获取IM、邮箱好友功能技术实现

2010-04-23 19:36 239 查看
人际关系平台,必然有邀请好友的功能,也会出现SNS里获取IM、邮箱好友的功能,这个功能的技术实现有很多,有Perl、PHP、Java的实现方式。下面分别介绍一下。
本文只介绍解决方案,而不对具体的技术实现和方式优劣进行分析和比较。


Perl

Perl的MSN模块不太好用,connect后就没有响应了,我分析可能是由于MSN认证协议发生变化,而模块没有相应的更新造成。
而另外一个Net::MSN安装时编译会出现问题,即使安装了Crypt::SSLeay模块也是如此。
我在google code上找到了一个其他人写的模块IM::MSN,还有一个基类IM::Base;经过了一些修改和补充,并加了一个类IM::MSNContactList来专门解析联系人列表。
调用方式如下:
my $msn_username = 'hfahe@live.cn';
my $msn_password = 'xxxx';
print IM::MSNContactList::get_msn_contact_list($msn_username, $msn_password);

输出为json字符串"{"test@hotmail.com":"test"}"。
三个模块可以在如下地址下载:http://code.google.com/p/perl-msn-linker/,目前还存在昵称乱码问题,如果需要的朋友可以自行调试解决。


Java

Java有一个叫contact-list的开源项目,主页在http://code.google.com/p/contact-list,里面包含了获取用户的msn和邮箱联系人列表,支持的邮箱包括hotmail, gmail, yahoo, sohu, sina, 163, 126, tom, yeah, 189和139。

下载包含所有依赖包的contactlist-1.6.1-jars-with-dependencies.zip。

解压/配置java环境。

调用代码如下:
import java.util.List;
import com.huangzhimin.contacts.Contact;
import com.huangzhimin.contacts.ContactsImporter;
import com.huangzhimin.contacts.ContactsImporterFactory;
import com.huangzhimin.contacts.exception.ContactsException;
/*
 * @author: yujie
 */
public class SNSContactList {
    public static void main(String args[]) {
        String username = "hfahe@163.com";
        String password = "";
        try {
            ContactsImporter importer = ContactsImporterFactory.getOneSixThreeContacts(username, password);
            List<Contact> contacts = importer.getContacts();
            for (Contact contact : contacts) {
                System.out.println(contact.getUsername() + ": "    + contact.getEmail());
            }
        } catch (ContactsException ex) {
            ex.printStackTrace();
        }
    }
}



PHP

PHP的实现方式网上也有很多,但相对来说比较乱,以一个大的文件,一大段代码的方式出现,不像Perl和Java一样已经封装。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: