对新浪,腾讯微博常用接口的统一封装
??? 在做一个需要调用微博接口的项目中.发现了一些问题
?? ? ?? 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 blocke.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 少了包。