用了好长的时间终于把这些搞定,拿出来分享下。
Outlook 联系人 导出
Outlook导出主要使用了第三方的jar包,但是该第三方Java Outlook Connector需要购买,试用版是60天,如果是试用版的话每次运行会弹出对话框。下载的文件中提供了示例。
Yahoo 联系人 导出
Yahoo,linkedin,gmail等邮箱都遵循了oaut协议。所以我们可以通过这个协议得到联系人信息。此处我主要使用的jar包是由fernandezpablo85提供的jar包scribe来连接并认证得到联系人信息(参考https://github.com/fernandezpablo85/scribe-java)。
在该jar包中提供了一些示例,但是这些示例是建立在桌面程序上的,也就是需要用户手动得到验证码放回原处之后才能得到联系人信息。如果在web程序中可以跨过此步,也就是当用户同意导出联系人信息后可以直接得到这些信息。主要是在创建认证服务的时候添加一个方法callback("http://localhost:8080/complex"),这个方法是当用户同意授权并得到验证码后回调到的地址。这时候我的页面显示的地址是http://localhost:8080/complex/?oauth_token=kqvrdkz&oauth_verifier=eawvhc,通过这个地址我们可以得到验证码也就是oauth_verifier参数所传递的信息。通过这个验证码我们可以得到yahoo联系人的guid,然后再通过guid得到该用户的所有联系人。(详见示例)
Linkedin 联系人 导出
Linkedin主要流程和yahoo的流程大概一致,但是linkedin不需要得到guid,可以通过oauth_verifier直接得到用户的联系人。
这里需要注意的是在linkedin是需要指定返回的列名的。而不像yahoo可以通过一个地址得到联系人的所有属性。(详见示例)
Hotmail 联系人 导出
Hotmail需要得到你的授权码(delegationToken)和你需要操作的人的标志信息(locationid)。
通过hotmail提供的示例(参考http://msdn.microsoft.com/en-us/library/cc287672.aspx)可以得到如何得到上面的两个值。得到这两个值后可以拼装地址并得到需要的信息。
此处我用的方法不是scribe中提供的方法,我使用的是自己写的类Hotmail.java,主要利用java.net包得到hotmail联系人的xml输出流。(详见示例)
Gmail 联系人 导出
gmail除了遵循oauth以外还提供了较好的接口通过这些接口我们可以直接得到联系人的信息或者编辑,添加,删除等操作。
参考http://code.google.com/intl/zh-CN/apis/contacts/docs/3.0/developers_guide_java.html
以下是我的导出yahoo邮箱的代码
<%@ page language="java" import="com.gozap.util.*" import="com.gozap.cache.*" import="java.util.*" import="org.scribe.model.*" import="org.scribe.builder.api.*" import="org.scribe.builder.*" import="org.scribe.oauth.*" %>
<%@page import="com.google.gdata.util.common.base.StringUtil"%>
<%@page import="java.io.InputStream" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%
String key="your key";
String secret="your secret";
//String PROTECTED_RESOURCE_URL = "http://social.yahooapis.com/v1/user/";
String GUID_URL="http://social.yahooapis.com/v1/me/guid";
OAuthService service = new ServiceBuilder()
.provider(YahooApi.class)
.apiKey(key)
.apiSecret(secret).callback("http://localhost:8080/complex")
.build();
TokenCache cache=TokenCache.getInstance();
String username=(String)request.getAttribute("username");
username="test";
String verif=request.getParameter("oauth_verifier");
String requestTokenKey=request.getParameter("oauth_token");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<% if(StringUtil.isEmptyOrWhitespace(verif)||StringUtil.isEmptyOrWhitespace(requestTokenKey)){
// Obtain the Request Token
Token requestToken = service.getRequestToken();
String AUTHORIZE_URL = "https://api.login.yahoo.com/oauth/v2/request_auth?oauth_token="+requestToken.getToken();
cache.addRequestToken(username,requestToken);
%>
<script>
window.location="<%=AUTHORIZE_URL%>"
</script>
<% }else{
Verifier verifier = new Verifier(verif);
//get the guid
Token requestToken=cache.getRequestToken(username);
Token guidToken = service.getAccessToken(requestToken,verifier);
OAuthRequest requestGuid = new OAuthRequest(Verb.GET, GUID_URL);
service.signRequest(guidToken, requestGuid);
Response responseGuid = requestGuid.send();
InputStream guidCont=responseGuid.getStream();
//String guidCont=responseGuid.getBody();
//out.println(guidCont);
String guid=XmlParse.getGuid(guidCont);//解析xml文件得到guid的值
//out.println("guid================="+guid);
//-----
Token accessToken = service.getAccessToken(requestToken, verifier);
String PROTECTED_RESOURCE_URL = "http://social.yahooapis.com/v1/user/"+guid+"/contacts";
OAuthRequest requestContacts = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
service.signRequest(accessToken, requestContacts);
Response mailResponse = requestContacts.send();
//String outbody=mailResponse.getBody();
//out.println(outbody);
InputStream contactsCont=mailResponse.getStream();
XmlParse.writeToFile(contactsCont);//将得到的xml流写入到文件中
//out.println(contactsCont);
}%>
</body>
</html>
其中key,secret改成自己相应的东东,第17行的callback方法里面的地址改成你自己的地址。
hotmail
经过上面的介绍得到locationId和delegationToken后
String locationId="";
String delegationToken="";
URL u=new URL("https://livecontacts.services.live.com/users/@L@" + locationId + "/rest/invitationsbyemail?");
HttpURLConnection urlConnection = (HttpURLConnection)u.openConnection();
urlConnection.setRequestMethod( "GET" );
urlConnection.setRequestProperty( "Authorization" , "DelegatedToken dt=\"" + delegationToken + "\"" );
urlConnection.setDoInput( true );
urlConnection.setDoOutput( true );
urlConnection.setUseCaches( false );
urlConnection.connect();
BufferedReader inStream = new BufferedReader( new InputStreamReader(urlConnection.getInputStream()));
int end=inStream.read();
while(end>=0){
System.out.print((char)end);
end=inStream.read();
}
urlConnection.disconnect();
这样就可以得到对应的用户的联系人。
分享到:
相关推荐
LinkedIn接口API调用实例是一个关于如何与LinkedIn的开发平台交互的实际应用示例。LinkedIn API允许开发者访问LinkedIn的数据,包括用户信息、公司数据、职位发布等,以便构建与LinkedIn相关的应用程序和服务。下面...
【标题】"contacts-sync:将LinkedIn同步到Google联系人"是一个项目,它的主要目标是实现LinkedIn社交平台的联系人数据与Google的Gmail通讯录之间的同步功能。这个项目对于那些需要在不同平台间统一管理人脉资源的...
2. **社交网络**:可以查询用户的好友、连接,甚至推荐新的联系人。 3. **职位发布**:发布或检索LinkedIn上的职位信息,帮助企业招聘。 4. **公司信息**:获取公司的基本信息,如公司规模、行业、员工评价等。 5. *...
"参考资料-Linkedin加相关行业联系人.zip"这个压缩包显然包含了与利用LinkedIn有效地扩展行业人脉相关的信息。下面我们将深入探讨LinkedIn的重要性和如何有效地添加相关行业联系人。 首先,LinkedIn作为全球最大的...
LinkedIn API 的 Python 接口Python 领英LinkedIn API 的 Python 接口该库为 LinkedIn个人资料、群组、公司、工作、搜索、共享、网络和邀请REST API提供了纯 Python 接口。LinkedIn提供一项服务,允许人们通过基于 ...
LinkedIn个人资料信息API 一个简单的API,它使用和从给定的用户名以JSON格式请求和解析基本的公共LinkedIn个人资料数据 设置 git clone git@github.com:tancredi/linkedin-profile-info-api.git cd linkedin-...
LinkedIn Java 库 这个库的目标是用一个更小、更快、更高效的 javalinkedin 库替换linkedin-j。 使用 scribe 进行 oauth-heavy 提升和 gson 进行 json 解析。 另一个目标是避免大多数这些库的一个常见问题,即它们...
3. **销售与营销**:分析客户公司的内部结构,寻找关键联系人。 4. **学术研究**:收集职业网络数据,进行社会网络分析。 总之,LinkedIn Spider 提供了一种有效的方式来获取LinkedIn上的公开数据,但使用时应确保...
github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...
2. **数据访问**:Voyager允许开发者获取用户授权后的LinkedIn个人资料、联系人、工作历史、教育背景、技能等信息。 3. **实时更新**:通过监听API事件,Voyager可以实现实时数据更新,当LinkedIn上的信息发生变化...
6. **API与集成**:对于开发者,ContactsManager可能提供API接口,允许其他应用或服务与之交互,例如导入导出联系人,或者在应用间共享联系信息。 7. **性能优化**:对于大量联系人的处理,应用需要有高效的算法和...
NodeJS工具导出Linkedin数据 安装 git clone https://github.com/nhduy1985/linkedin-export-tool.git cd linkedin-export-tool npm install 配置 mkdir export cp config.json.dist config.json vim config.json ...
已淘汰LinkedIn2Md 将公开的LinkedIn个人资料导出为Markdown格式。 您可以使用此工具从您的LinkedIn个人资料生成Markdown格式的简历。 编辑输出的Markdown文件并将其转换为PDF, 因此您可以使用纯文本简历(也许将其...
学习 Java这是 LinkedIn Learning 课程 Learning Java 的存储库。完整课程可从LinkedIn Learning获取。 Java 是五大编程语言之一,用于网站、嵌入式控制器和 Android 应用开发。有兴趣学习如何使用 Java 编写代码吗...
用于Gmail, Hotmail, Yahoo, AOL等的通知。 Gmail,Hotmail,Yahoo,AOL等的通知程序X-notifier检查您的Web邮件帐户并通知未读电子邮件的数量。 通知不限于网络邮件。 您还可以通过安装脚本来获取有关一百多个站点...
LinkedIn-REST-API-应用程序演示 LinkedIn REST API 的简单 J2EE 应用程序此应用程序演示了如何将 LinkedIn REST API 与您的 Java 项目集成。 目前(在这个初始提交中)与 LinkedIn 公司页面相关的工作已经完成。 ...
PHP中的LinkedIn API客户端 一个PHP库,用于处理与LinkedIn API的身份验证和通信。 库/ SDK帮助您获取访问令牌,并且在通过身份验证后,可以帮助您发送API请求。 但是,您不会免费获得所有内容。您必须阅读以了解...
【LinkedIn的Java架构技术详解】 LinkedIn是全球知名的社交网络平台,尤其在专业领域具有广泛的影响力。该平台在2008年的JavaOne会议上展示了其基于Java技术构建的架构设计。以下是对LinkedIn架构技术的深入解析: ...
Python LinkedIn 到LinkedIn API的Python接口 该库为LinkedIn Profile , Group , Company , Jobs , Search , Share , Network和Invitation REST API提供了纯Python接口。 提供了一项服务,使人们可以通过基于...
在本场景中,"Python-用于挖掘LinkedIn的工具无需API限制进行数据侦察"指的是一个利用Python编写的程序,能够绕过LinkedIn的官方API限制,从而进行数据的抓取和分析。这通常涉及到网络爬虫技术和数据分析技术。 ...