`
longzhun
  • 浏览: 371988 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

新浪微博Oauth2.0授权以及API调用封装

 
阅读更多

网上有很多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";
 }

 

分享到:
评论

相关推荐

    新浪微博OAuth2.0 SDK+ Demo C#

    本文将深入探讨如何使用C#语言结合新浪微博OAuth2.0 SDK,实现对微博数据的获取和操作,以及通过提供的Demo来理解和实践这个过程。 首先,OAuth2.0是一种授权框架,它允许第三方应用在用户授权的情况下访问其存储在...

    OAuth2.0新浪微博简单示例

    5. **saetv2.ex.class.php**:可能是一个封装了新浪微博API调用的类库,包含了处理OAuth2.0逻辑的函数。 6. **logout.php**:注销功能,允许用户撤销对客户端的授权。 在实际操作中,`index.php`会先展示一个登录...

    Android版新浪微博API(OAuth2.0授权)

    本文将深入探讨如何在Android平台上使用新浪提供的API,特别是基于OAuth2.0授权机制的Android版新浪微博API。这个API允许开发者构建应用程序,与微博用户进行互动,包括发布和获取微博信息、管理用户关注关系、获取...

    新浪微博SDK2.0

    在当今互联网时代,社交媒体平台扮演着至关重要的角色,其中新浪微博作为中国的一大社交巨头,为开发者提供了丰富的API接口和SDK工具,便于开发者构建与微博平台深度集成的应用。本文将详细介绍“新浪微博SDK2.0”,...

    使用Oauth2.0实现新浪微博客户端(C#)

    总之,使用OAuth2.0和C#开发新浪微博客户端涉及了网络请求、JSON解析、授权流程和错误处理等多个环节。理解这些概念和技术,不仅可以帮助你完成这个项目,还能为其他OAuth2.0服务的集成提供借鉴。

    java调用新浪微博API接口源码

    Java调用新浪微博API接口是Java开发者与社交媒体进行交互的一个常见任务,主要涉及到网络请求、OAuth2.0授权机制以及微博平台提供的各种API服务。这里,我们深入探讨一下这个主题。 首先,`weibo4j-oauth2`这个...

    asp.net 腾讯微博新浪微博帐号登录 授权

    2. 拼接授权URL:根据腾讯微博的OAuth2.0协议,构建授权请求的URL,包含App ID、回调地址、权限范围等参数。 3. 用户授权:引导用户跳转到上述URL,用户在腾讯微博上确认授权。 4. 获取授权码:用户授权后,腾讯微博...

    新浪微博爬数据

    weibo4j是专为新浪微博设计的一个开源Java SDK,它封装了API接口,方便开发者调用。 在文件名"weibo4j-oauth2"中,我们可以推断出源代码可能包含了使用OAuth2.0协议获取和使用token的逻辑。OAuth2.0是一种授权框架...

    新浪微博数据调用实例

    通常,这包括设置API的URL、认证信息(如OAuth2.0授权)以及发送HTTP请求的方法。 描述中提到“可以修改成自己所需要的数据”,这意味着这个实例不仅展示了基本的调用过程,还可能涉及数据筛选和定制化处理。在获取...

    新浪微博接口

    OAuth2.0是一种流行的授权协议,被广泛应用于各种互联网服务中,包括新浪微博API。它的主要作用是在不暴露用户密码的情况下,允许第三方应用请求访问用户在微博平台上的资源或数据。OAuth2.0通过一系列的安全流程,...

    新浪微博登录织梦cms

    总之,实现“新浪微博登录织梦cms”的功能,需要开发者具备PHP编程、OAuth2.0授权机制、以及织梦CMS的二次开发能力。同时,为了保障用户数据的安全,还需要遵循最佳实践,例如加密存储敏感信息,合理设置Access ...

    实现新浪微博一键分享

    总结起来,实现新浪微博一键分享功能,开发者需要对OAuth2.0授权机制有基本了解,熟悉微博开放平台的API接口,以及如何使用SDK进行集成。同时,良好的用户体验设计也是关键,如在分享过程中保持流畅,错误处理及时且...

    Android客户端接入新浪微博

    综上所述,接入新浪微博涉及的Android知识点包括:Android SDK基础、OAuth授权、网络通信(HTTP库的使用)、API调用、用户体验设计、版本兼容性和缓存策略。通过深入理解和实践这些技术,开发者可以成功地在自己的...

    控制台应用程序调用新浪微博API的小例子

    在IT行业中,控制台应用程序是开发人员经常使用的...这涉及到C#的基础知识、API的理解、OAuth2.0授权流程以及新浪SDK的使用。通过学习和实践这样的例子,开发者可以进一步提升自己的技能,实现与更多在线服务的集成。

    新浪微博SDK和Demo

    通过这个SDK和Demo,开发者不仅可以学习如何在Android应用中整合微博服务,还能了解OAuth2.0授权机制以及如何与开放平台进行交互。这为开发者提供了丰富的功能,同时也为用户带来了社交体验的无缝连接。

    android新浪和QQ微博的,

    新浪微博提供了OAuth 2.0授权机制,允许开发者获取用户的授权并进行数据操作。而QQ微博同样采用OAuth 2.0,为开发者提供了一套完整的SDK,包括登录、分享等功能。 1. **OAuth 2.0授权流程**: - 用户打开应用,...

    新浪微博(Sina)登录所需文件jar\so

    总之,要在Android应用中实现新浪微博登录,开发者需要理解OAuth2.0授权机制,熟悉新浪提供的SDK,并能正确处理登录过程中的各种细节。通过参考博客和示例代码,可以有效地完成这一任务。同时,了解并遵守第三方平台...

    新浪微博安卓SDK

    6. **API调用**:SDK封装了大量微博API接口,包括发布微博、评论、转发、赞等,使得开发者可以按照需求定制功能。 二、SDK的使用流程 1. **注册开发者账号**:首先,你需要在新浪开放平台注册成为开发者,并创建...

    weibo4j-oauth2-2.1.1-beta2-2.zip

    源码通常包括了API调用的封装、错误处理、请求签名以及OAuth2.0授权流程的实现。这对于理解微博API的工作原理,以及提升自身Java编程和API开发能力都非常有帮助。 使用`weibo4j`进行开发,开发者首先需要在新浪开放...

    毕业设计,关于新浪微博API的Java编程..zip

    1. **OAuth认证**:新浪微博API采用OAuth2.0进行身份验证,开发者需要注册应用获取App Key和App Secret,然后通过授权流程获取Access Token,用于后续API调用的身份验证。 2. **JSON解析**:API返回的数据通常以...

Global site tag (gtag.js) - Google Analytics