首先
下载sdk并导入eclipse
ps:以下测试基于weibo4J
Sina微博SDK中提供了大量的接口,这些接口全部都是通过URL方式进行调用
每次接口的调用都是一个短连接request 然后sina返回一个response
如:
URL
http://api.t.sina.com.cn/statuses/update.(json|xml)
首先需要先去sina微博创建一个应用,会获取一个AppKey和AppSecret
weibo.java中将key和AppSecret填入
public static String CONSUMER_KEY = ""; //这里填入AppKey
Public static String CONSUMER_SECRET = ""; //填入AppSecret
现在说一下认证方式
Sina已经取消basic Auth的支持,因为basic Auth会将用户的账户名和密码暴露给第三方,这就相当的不安全了,因此现在sina微博和腾讯微博都是通过Oauth方式来进行认证
Oauth简介:
OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。
需要保存经过用户授权的Key与Secret组合即可对于平台上的所有接口资源进行访问,在传输过程中也可以避免被不怀好意的人通过截包分析的方式获取到用户的帐号与密码
sina微博的认证流程
Oauth认证
认证流程可比喻成 银行 (sina)---代理公司(应用)--用户
代理公司若想获取用户信息,首先需要有银行的代理资质(requestToken)
银行询问用户是否授权给代理公司,若同意授权银行将授权文件(授权码)返回给用户
代理公司获取授权文件后,提供代理资质和授权文件获得银行的查询权限(AccessToken和secret)
最后返回查询权限和该用户的信息
1. 第三方应用从sina获取requestToken
2.让用户登陆到sina微博获取对第三方应用的授权码
3.用户将授权码输入给第三方应用
4.第三方使用requestToken和授权码从sinba拿到AccessToken和secret
OauthUpdate.java
System.setProperty("weibo4j.oauth.consumerKey", Weibo.CONSUMER_KEY);
System.setProperty("weibo4j.oauth.consumerSecret", Weibo.CONSUMER_SECRET);
// 1.第三方应用从sina获取requestToken
Weibo weibo = new Weibo();
RequestToken requestToken = weibo.getOAuthRequestToken();
System.out.println("Got request token.");
System.out.println("Request token: "+ requestToken.getToken());
System.out.println("Request token secret: "+ requestToken.getTokenSecret());
AccessToken accessToken = null;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while (null == accessToken) {
//2.让用户登陆到sina微博获取对第三方应用的授权
System.out.println("Open the following URL and grant access to your account:");
System.out.println(requestToken.getAuthorizationURL());
BareBonesBrowserLaunch.openURL(requestToken.getAuthorizationURL());
System.out.print("Hit enter when it's done.[Enter]:");
//3.用户将授权码输入给第三方应用
String pin = br.readLine();
System.out.println("pin: " + br.toString());
try{
//4.第三方应用使用授权码和requestToken拿到AccessToken和secret
accessToken = requestToken.getAccessToken(pin);
Weibo weibo = new Weibo(); debug单步执行即可获取授权码,
然后将授权码输入至控制台,即可返回AccessToken和secret
注:每一个账户都会得到AccessToken,只需要获得一次
上传一条微博信息
将刚才申请授权的代码注释掉
在Weibo weibo = new Weibo(); 下添加
weibo.setToken(Access token,token secret); //设置访问的token
Weibo.updatestatus(string); //上传微博信息
成功更新状态………………