对新浪,腾讯微博惯用接口的统一封装
对新浪,腾讯微博常用接口的统一封装
在做一个需要调用微博接口的项目中.发现了一些问题
1.腾讯微博sdk的封装粒度不够,需要在其上做二次开发
2.新浪,腾讯微博没有实现统一的接口,在做项目的时候需要将它们分开来实现,代码看起来很别扭
我所做的就是解决了以上两个问题,所以现在做微博应用开发非常方便
统一接口
/** * @Description:微博接口 */ public interface Weibo { /** * 得到RequestToken * @param callbackUrl * @return */ public RequestToken getRequestToken(String callbackUrl) throws Exception; /** * 得到AccessToken * @param requestToken * @param verifier * @return * @throws Exception */ public AccessToken getAccessToken(RequestToken requestToken,String verifier) throws Exception; /** * * @param accessToken */ public void setAccessToken(AccessToken accessToken); /** * 得到用户信息 * @return */ public User getUserInfo() throws Exception; /** * friendNum是否已经被关注 * @param friendNum * @return */ public boolean isFriends(String friendNum) throws Exception; /** * 关注friendNum * @param friendNum */ public void createFriendship(String friendNum) throws Exception; /** * 发微博 * @param info 微博信息 * @param file 上传的图片文件,不上传文件传null */ public void publishMsg(String info, File file) throws Exception; }
开发步骤如下:
1.设置项目的key和secret(key,secret是用微博帐号申请的),只需要初始化一次
新浪:
System.setProperty("weibo4j.oauth.consumerKey", "xxx"); System.setProperty("weibo4j.oauth.consumerSecret", "xxxxxxxxxx");
腾讯:
System.setProperty("qqweibo.oauth.consumerKey","xxx"); System.setProperty("qqweibo.oauth.customSecret","xxxxxxxxxx");
2.传入微博帐号登录后需要返回的地址callbackUrl,得到requestToken和授权url
新浪:
Weibo weibo = new SinaWeibo(); try { RequestToken requestToken = weibo.getRequestToken(callbackUrl); System.out.println(requestToken.getReqToken()+"-->"+requestToken.getReqTokenSecret()); System.out.println(requestToken.getAuthorizationURL()); } catch (Exception e) { e.printStackTrace(); }
腾讯:
Weibo weibo = new QQWeibo(); try { RequestToken reqToken = weibo.getRequestToken(callbackUrl); System.out.println(reqToken.getReqToken()+"-->"+ reqToken.getReqTokenSecret()); System.out.println(reqToken.getAuthorizationURL()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
3. 在浏览器上输入授权url,用微博帐号登录后跳转到callbackUrl,获取callbackUrl后面的参数oauth_verifier的值,
通过传入requestToken,oauth_verifier的值得到AccessToken
新浪:
Weibo weibo = new SinaWeibo(); try { AccessToken accessToken = weibo.getAccessToken(requestToken, oauth_verifier); System.out.println(accessToken.getAccessToken()+"-->"+ accessToken.getAccessTokenSecret()); } catch (Exception e) { e.printStackTrace(); }
腾讯:
Weibo weibo = new QQWeibo(); try { AccessToken accessToken = weibo.getAccessToken(reqToken, oauth_verifier); System.err.println(accessToken.getAccessToken()+"-->"+ accessToken.getAccessTokenSecret()); } catch (Exception e) { e.printStackTrace(); }
得到accessToken对象后就可以保存下来,以后调用关注好友接口,发微博接口都需要用到
4.调用获取用户接口
新浪:
Weibo weibo = new SinaWeibo(); try { weibo.setAccessToken(accessToken); User user = weibo.getUserInfo(); System.out.println(user.getHuaming()); } catch (Exception e) { e.printStackTrace(); }
腾讯:
Weibo weibo = new QQWeibo(); try { weibo.setAccessToken(accessToken); User user = weibo.getUserInfo(); System.out.println(user.getHuaming()); } catch (Exception e) { e.printStackTrace(); }
5.调用关注接口,发微博等接口同4
最后我把封装的jar包发给大家
1 楼
txc_tang
2011-10-11
少了包。
java.lang.ClassNotFoundException: com.mime.qweibo.OauthKey
java.lang.ClassNotFoundException: com.mime.qweibo.OauthKey
2 楼
liudeh_009
2011-10-12
要把新浪,腾讯微薄的sdk包同时加上
3 楼
zhaoshg
2011-10-24
大侠能否提供源码?
4 楼
hejt121
2011-11-28
有源码吗,大侠,发一份 365353650@qq.com谢谢
5 楼
liudeh_009
2011-11-30
反编译一下就行了