用了好长的时间终于把这些搞定,拿出来分享下。
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个人资料信息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 解析。 另一个目标是避免大多数这些库的一个常见问题,即它们...
linkedin api for php 有相关的文档 网址参考,不过普片上只要你流程没错,代码只要把key secret放进去 程序就哦了 就收个1积分吧 这不自己也没积分了
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 ...
参考资料-Linkedin加相关行业联系人.zip
联系人同步将您的LinkedIn联系人导入到您的Gmail通讯录维护者:
github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...
已淘汰LinkedIn2Md 将公开的LinkedIn个人资料导出为Markdown格式。 您可以使用此工具从您的LinkedIn个人资料生成Markdown格式的简历。 编辑输出的Markdown文件并将其转换为PDF, 因此您可以使用纯文本简历(也许将其...
LinkedinSpider, Linkedin爬虫,根据公司名字抓取员工的linkedin信息
用于Gmail, Hotmail, Yahoo, AOL等的通知。 Gmail,Hotmail,Yahoo,AOL等的通知程序X-notifier检查您的Web邮件帐户并通知未读电子邮件的数量。 通知不限于网络邮件。 您还可以通过安装脚本来获取有关一百多个站点...
旅行者围绕linkedin旅行者私有API的小包装
LinkedIn-REST-API-应用程序演示 LinkedIn REST API 的简单 J2EE 应用程序此应用程序演示了如何将 LinkedIn REST API 与您的 Java 项目集成。 目前(在这个初始提交中)与 LinkedIn 公司页面相关的工作已经完成。 ...
PHP中的LinkedIn API客户端 一个PHP库,用于处理与LinkedIn API的身份验证和通信。 库/ SDK帮助您获取访问令牌,并且在通过身份验证后,可以帮助您发送API请求。 但是,您不会免费获得所有内容。您必须阅读以了解...
现在,您可以维护您的 Linkedin 配置文件,并保证您可以使用 Google Chrome 中的“Safe to PDF”打印机将其打印或导出为 PDF 文件。 此 Google Chrome 扩展程序将在浏览器地址栏(Omnibar)的右侧添加一个小的 ...
github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...
github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...
github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...