网上有很多Oauth1.0的封装,但没Oauth2.0的,故我就封装了2.0的给大家分享
weibo5j这个是个自己修改的,因为项目中有1.o的包,冲突了
package com.tuan.web.service.weibo;
import org.springframework.stereotype.Service;
import com.tuan.web.service.weibo.util.WeiboUtils;
import weibo5j.Account;
import weibo5j.Friendships;
import weibo5j.Oauth;
import weibo5j.Timeline;
import weibo5j.Users;
import weibo5j.Weibo;
import weibo5j.http.AccessToken;
import weibo5j.model.User;
import weibo5j.model.UserWapper;
import weibo5j.model.WeiboException;
import weibo5j.org.json.JSONObject;
/**
* @Title: SinaWeiboV2.java
* @Package com.tuan.web.service.weibo
* @Description: TODO(新浪围脖)
* @author longzhun
* @date 2012-7-27 下午03:01:23
* @version V2.0
*/
@Service
public class SinaWeiboV2 {
private Weibo weibo;
private Oauth oauth;
public SinaWeiboV2(){
oauth = new Oauth();
weibo = new Weibo();
}
/**
* 设置accesstoken
*/
public void setToken(String code) throws WeiboException{
AccessToken token = oauth.getAccessTokenByCode(code);
weibo.setToken(token.getAccessToken());
}
public String getRequestToken() throws WeiboException{
return oauth.authorize("code");
}
/**
* 根据用户id获取用户信息
*/
public User getUserInfo(String uid) throws WeiboException{
Users user = new Users();
User userInfo = user.showUserById(uid);
return userInfo;
}
/**
* 获取用户Id
*/
public String getUserId() throws Exception{
Account am = new Account();
JSONObject json = am.getUid();
if(json == null){
return "";
}
return json.getString("uid");
}
/**
* 添加关注
*/
public void createFriend(String uid) throws WeiboException{
Friendships fm = new Friendships();
UserWapper friend= fm.getFollowersById(uid);
if(friend == null){
fm.createFriendshipsById(uid);
}
}
/**
* 发布围脖
*/
public void publicMsg(String status,String fileName) throws Exception{
Timeline tm = new Timeline();
if (fileName == null || "".equals(fileName)){
tm.UpdateStatus(status);
}else{
byte[] imageBytes = WeiboUtils.readFileImage(fileName);
weibo5j.http.ImageItem item = new weibo5j.http.ImageItem(imageBytes);
tm.UploadStatus(status, item);
}
}
}
/**
* @Title: WeiboUtils.java
* @Package com.tuan.web.service.weibo.util
* @Description: TODO(添加描述)
* @author longzhun
* @date 2012-7-23 下午07:36:10
* @version V1.0
*/
public class WeiboUtils {
public static byte[] readFileImage(String filename)throws IOException{
URL url = new URL(filename);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.connect();
InputStream inStream = conn.getInputStream();
ByteArrayOutputStream outsStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while((len = inStream.read(buffer))!=-1){
outsStream.write(buffer,0,len);
}
outsStream.close();
inStream.close();
return outsStream.toByteArray();
}
}
@RequestMapping(value = "/bindSina2",method=RequestMethod.GET)
public String bindSina2(QueryForm queryForm, String goodsId,ModelMap modelMap, HttpServletRequest request,
HttpServletResponse response) {
String returnurl = "";
try{
returnurl = sinaWeiboV2.getRequestToken();
}catch(Exception e){
e.printStackTrace();
logger.error("bindSina is error "+e,e);
}
return "redirect:"+returnurl;
}
@RequestMapping(value = "/forwardSinaweibo2")
public String forwardSinaweibo2(QueryForm queryForm, String code,ModelMap modelMap, HttpServletRequest request,
HttpServletResponse response) throws Exception {
try{
sinaWeiboV2.setToken(code);
String uid = "1730077315";
sinaWeiboV2.getUserId(); //获取用户Id 绑定窝窝账号
sinaWeiboV2.createFriend(uid); //添加关注
sinaWeiboV2.publicMsg(URLEncoder.encode("封装完毕:新浪围博客Oauth2.0","UTF-8"),
"http://ww1.sinaimg.cn/bmiddle/7e14fe22jw1dvbdwfyvpoj.jpg
"); //发布围脖
}catch(Exception e){
logger.error("异常信息:"+e,e);
return "error";
}
return "error";
}
分享到:
相关推荐
Java,腾讯微博通过OAuth2.0授权,可发文本微博的示例源代码。
RT,使用WebView实现新浪微博Oauth2.0认证,非截取html代码获取验证码 界面跳转无副作用
IOS最新新浪微博开放平台Oauth2.0授权获取Access_Token的Demo
新浪微博OAuth2.0API源码 一个更方便,更快速的C#SDK,希望能帮助更多的朋友学习和使用 新浪微博OAuth2.0API使用流程: 1、根据需要求修改配置文件(Wbm.SinaV2.config)。 2、注册ApplicationKey。(参考...
本文档使用C#语言开发,MVC框架调用新浪微博第三方登录OAuth2.0接口。 详细介绍相关开发步骤信息。
android 腾讯微博Oauth2.0认证以及自定义webview认证
一个更方便,更快速的-新浪微博 OAuth2.0 C# SDK,希望能帮助更多的朋友学习和使用
实现新浪微博的OAuth2.0认证登陆,有自己找的资源,以及一些对自己帮助很大的网页,由于新浪微博不支持OAuth1.0了,所以把项目里的新浪微博登陆改为OAuth2.0了
新浪微博oauth认证源码,只要加入开发者自己的key与secret即可通过认证,进行相应的开发
新浪微博C#版SDK Demo 包含获取个人信息、获取会员好友信息、常用的api 分装集成。简单易懂,不管你是高手还是菜鸟都适用。
新浪腾讯微博oauth2.0登录授权及转发实例
【第三方开放平台系列】腾讯微博Oauth2.0授权认证-源码
微博Oauth2.0 协议,用java 实现单点登录获取用户信息。
对不起,我不得不给这个资源挂上分数,因为该死的CSDN非要折腾个这垃圾功能,我要下载别人的东西没积分没办法....这个里面包括代码,我整理的word笔记文档。 只是我觉得这远远不够,过几天我会录制一个视频,因为我...
最近做了新浪微博分享,在网上找了一个 是Oauth1.0的 但是在过不了多少天Oauth1.0 就用不了,就在做了Oauth2.0的图片和文字分享。
这是个新浪分享的demo,用的是weiboSDK2.1_130806.jar包,能直接运行,记得修改key的url,还要修改你的应用里的包名。就可以了.
帮助新手学习OAuth的一个很好的示例 http://blog.csdn.net/koastal/article/details/50282509
自己写的使用WebView授权DEMO 与上一版相比,该demo取消使用safari授权、取消使用asi进行http访问;同时保留了aes加密模块;增加了腾讯微博的授权,分享微博功能
asp.net 网易微博 OAuth 2.0 实例源码 1.需要在http://open.t.163.com/ 申请一个帐号 2.获取Appkey,AppSecret 3.需要配置 oauth.config 填入相应的Appkey,AppSecret,原来上面的是我自己乱填的,所以测试需要填你...
主要为大家详细介绍了Android仿新浪微博oauth2.0授权界面实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下