`

腾讯微博授权登陆超简单示例(源自官方Demo)

阅读更多
本人初学乍练 有什么不合适的地方欢迎大家踊跃吐槽

首先参考官方API文档 了解腾讯微博Oauth2.0形式的授权过程
这次主要将的是(code模式)方式的鉴权
http://wiki.open.t.qq.com/index.php/API%E6%96%87%E6%A1%A3

了解大致过程后 下载官方SDK
我使用的是Java SDK
http://wiki.open.t.qq.com/index.php/SDK%E4%B8%8B%E8%BD%BD#Java_SDK

将官方SDK添加到项目中
在项目名上右击 Build Path->Add External Archives...选择要添加的jar文件


首先生成鉴权URL
	/**
	 * 生成腾讯微博授权URL
	 * @param request
	 * @param m
	 * @return
	 * @throws IOException
	 */
	@RequestMapping(value = "/tencent/loginV2", method = RequestMethod.GET)
	public String tencentLogin(HttpServletRequest request, Model m) throws IOException {
		
					String url = "http://open.t.qq.com/cgi-bin/oauth2/authorize?client_id=你申请的App Key&redirect_uri=回调地址&response_type=code";//
					return "redirect:" + url;


	}



上一步生成了授权URL 会自动引导你到填写微博账户的登录页面 填写完成 验证通过后 会回调到你刚才提交的redirect_uri地址

	/**
	 * 腾讯微博登录成功后的回调地址
	 * @param code 用来换取accesstoken的授权码,有效期为10分钟
	 * @param openid 用户统一标识,可以唯一标识一个用户
	 * @param openkey 与openid对应的用户key,是验证openid身份的验证密钥
	 * @param oAuthV2
	 * @param request
	 * @param response
	 * @param model
	 * @return
	 * @throws Exception
	 */
	@RequestMapping(value = "/tencent/loginV2/callback", method = RequestMethod.GET)
	public String tencentLoginCallback(String code, String openid, String openkey,
			OAuthV2 oAuthV2,//2.0
			HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {
		
     	 //设置授权 直接将授权码的参数记录到OAuth类中
		 if ((!QStrOperate.hasValue(code)) ||
                (!QStrOperate.hasValue(openid)) ||
                (!QStrOperate.hasValue(openkey))) {
			 return EnumErrorCode.ERROR_404.getValue();
         }
		 oAuthV2.setAuthorizeCode(code);
		 oAuthV2.setOpenid(openid);
		 oAuthV2.setOpenkey(openkey);
		 
		 oAuthV2.setClientId("申请时得到的AppKey");
		 oAuthV2.setClientSecret("申请时得到的AppSecret");//大家可自行到腾讯微博开放平台申请
		 oAuthV2.setRedirectUri("http://localhost/tencent/loginV2/callback");
		 oAuthV2.setGrantType("authorization_code");
		 
         //检查是否取得code
         if(!QStrOperate.hasValue(oAuthV2.getAuthorizeCode())){
        	 oAuthV2.setStatus(2);
         	 return EnumErrorCode.ERROR_404.getValue();
         }else
        	 oAuthV2.setStatus(0);//没有出错
        
        //访问Token
        String url = "https://open.t.qq.com/cgi-bin/oauth2/access_token";
        String queryString = QStrOperate.getQueryString(oAuthV2.getAccessTokenByCodeParamsList());
        
        //请求accesstoken 
        String responseData = Q_HTTP_CLIENT.httpGet(url, queryString);
        
        //将服务器返回的包含access token等的回应包  解析存储到OAuth类中
        if (!parseAccessToken(responseData, oAuthV2)) {// Access Token 授权不通过
        	oAuthV2.setStatus(3);
        	return EnumErrorCode.ERROR_404.getValue();
        }
        //回调时可debug查看是否获得access token 下面为常用调用API测试方法
        //    	String response1;
//        String format="json";
//        String clientip="127.0.0.1";
//        String jing ="";
//        String wei ="";
//        String syncflag="";
//        String content="2";// 注意:因为后台会对微博内容进行判重,所以在重复测试时加上变换部分++++++++
//        String reid=null;
//	    String ids=null;
//	    String id=null;
//        String picpath=System.getProperty("user.dir")+"\\src\\main\\resources\\logo_QWeibo.jpg";
//        
//        TAPI tAPI=new TAPI(oAuthV2.getOauthVersion());//根据oAuth配置对应的连接管理器
//        //取得返回结果
//        response1=tAPI.add(oAuthV2, format, "测试发表文字微博"+content, clientip, jing, wei, syncflag);
//             // json数据使用
//             // response的结果可能是这样,{"data":{"id":"90221131024999","time":1333002978},"errcode":0,"msg":"ok","ret":0}
//             // 下面的代码将取出 id 的对应值,并赋予 reid
//            System.out.println("response = "+response1);
//            JSONObject responseJsonObject;
//            JSONObject dataJsonObject;
//            responseJsonObject= JSONObject.fromObject(response1);
//            dataJsonObject=(JSONObject)responseJsonObject.get("data");
//            id=ids=reid=dataJsonObject.get("id").toString();//对后面用到的 reid 赋值
//            System.out.println("reid = "+ reid);
//        try { Thread.sleep ( 5000 ) ; } catch (InterruptedException ie){}
//        
//        tAPI.addPic(oAuthV2, format, "发表一条带本地图片的微博"+content, clientip, jing, wei, picpath, syncflag);
//        try { Thread.sleep ( 5000 ) ; } catch (InterruptedException ie){}
//        
//        tAPI.addVideo(oAuthV2, format, "发表视频微博"+content, clientip, jing, wei, "http://www.tudou.com/programs/view/yx41TA6rQfE/?resourceId=0_03_05_07", syncflag);
//        try { Thread.sleep ( 5000 ) ; } catch (InterruptedException ie){}


		return "redirect:/";
	}

    /**
     * 得到服务器返回的包含access token等的回应包后,解析存储到OAuth类中
     * 
     * @param responseData 格式:access_token=ACCESS_TOKEN&expires_in=60&name=NAME
     * @param oAuth
     * @return
     */
     public  static boolean parseAccessToken(String responseData, OAuthV2 oAuth){
        if (!QStrOperate.hasValue(responseData)) {
            return false;
        }

        oAuth.setMsg(responseData);
        String[] tokenArray = responseData.split("&");
        
        if (tokenArray.length < 2) {
            return false;
        }
        
        String tmpStr;
        for(int i=0;i<tokenArray.length;i++){
            if (tokenArray[i].startsWith("access_token=")){
                tmpStr=tokenArray[i].substring(tokenArray[i].indexOf('=')+1, tokenArray[i].length());
                if(!QStrOperate.hasValue(tmpStr)){
                    return false;
                }
                oAuth.setAccessToken(tmpStr);
            }
            if (tokenArray[i].startsWith("expires_in=")){
                tmpStr=tokenArray[i].substring(tokenArray[i].indexOf('=')+1, tokenArray[i].length());
                if(!QStrOperate.hasValue(tmpStr)){
                    return false;
                }
                oAuth.setExpiresIn(tmpStr);
            }
        }
        
        return true;
    }


如果成功发送了微博 说明授权成功

写的比较仓促 鉴于本人也是初次接触 如果有什么不妥的地方欢迎大家吐槽

下面附上官方Demo
2
1
分享到:
评论
2 楼 houzhe11 2013-04-08  
不错,,学习中
http://www.331king.com/JForum
1 楼 anglemoshao 2013-04-08  
点错了,踩上了,挺好的

相关推荐

    腾讯微博网页版SDK及示例 V1.1源码

    腾讯微博网页版SDK及示例 V1.1源码 配置 1. 微博callback url设置:把web.config里的webroot的值改成你的站点的Default.aspx的实际URL,如 http://t.qq1800.com/demo.aspx 2. Appkey, 改用自己的腾讯微博appkey,把...

    android腾讯微博分享demo

    "android腾讯微博分享demo"是一个示例项目,旨在帮助开发者理解并实现如何在Android应用中集成腾讯微博的分享功能。这个Demo经过了测试,被认为工作良好,对初学者来说简单易懂。 首先,我们需要了解腾讯微博开放...

    腾讯微博源代码

    【腾讯微博源代码】是一个对Android平台上微博应用开发感兴趣的开发者极具价值的学习资源。这个源代码提供了腾讯微博客户端的实现细节,让开发者有机会深入理解大型社交应用的架构设计、功能实现以及性能优化。通过...

    最新版腾讯微博模拟登陆 亲测可用

    本示例中,我们关注的是如何模拟登录最新版的腾讯微博。这个过程涉及到前端的JavaScript加密以及后端的HTTP请求处理。 首先,标题"最新版腾讯微博模拟登陆 亲测可用"表明我们要实现的功能是针对腾讯微博的模拟登录...

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

    在ASP.NET开发中,集成第三方社交媒体登录功能,如腾讯微博和新浪微博,是提高用户体验和方便用户注册的重要方式。本文将详细讲解如何在ASP.NET项目中实现腾讯微博和新浪微博的账号授权登录。 首先,我们需要理解...

    仿腾讯微博demo

    【标题】"仿腾讯微博demo"是一个项目实例,旨在模仿腾讯微博的功能,为开发者提供一个学习和参考的平台。这个demo通常包含基本的微博发布、查看、评论、转发等核心功能,帮助用户理解和实践社交网络服务(SNS)的...

    Java版腾讯微博OAuth2.0授权可发文本微博示例代码

    本示例代码关注的是如何使用Java语言结合腾讯微博的OAuth2.0授权机制来发送文本微博。OAuth2.0是一种广泛采用的开放标准,用于授权第三方应用访问用户的数据,而无需获取用户的用户名和密码。下面我们将深入探讨这个...

    asp.net 腾讯微博OAuth2.0SDK登陆网站源码

    asp.net 腾讯微博SDK OAuth2.0API接口,示例源码,登陆腾讯微博授权成功后可获得昵称、图像、OpenId,最新微博及粉丝等。100%可用,示例应用于 http://goupiaotong.com/login.aspx

    新浪和腾讯微博的授权、发微demo for Android

    2. 授权界面:展示微博授权页面,用户确认授权后跳转回应用。 3. 发布界面:包含编辑框、附件选择(如图片、视频)和发布按钮。 五、安全与隐私 1. 用户数据保护:确保在传输和存储用户信息时采取加密措施,遵循...

    腾讯微博调用demo

    腾讯微博调用Demo是一个用于演示如何与腾讯微博API进行交互的示例项目。这个Demo主要展示了如何使用编程语言(可能是Python、Java、JavaScript或其他支持HTTP请求的语言)来发送请求、接收响应,从而实现对腾讯微博...

    腾讯微博开放平台

    在移动开发领域,腾讯微博开放平台为开发者提供了一个强大的工具,允许他们集成微博功能到自己的Android应用程序中。这个平台提供了丰富的API,使得开发者可以轻松实现用户登录、微博发布、信息获取等一系列操作。...

    腾讯微博抓取数据

    在实现过程中,首先要进行用户授权,这通常包括跳转到腾讯微博的授权页面,用户同意后会返回一个授权码。这个授权码会被用来换取访问令牌(Access Token)和刷新令牌(Refresh Token)。访问令牌用于后续的所有API...

    竞品分析报告腾讯微博VS新浪微博.ppt

    微博市场竞争分析报告是对腾讯微博和新浪微博两大微博平台的竞争分析报告。报告对两大平台的用户规模、活跃用户规模、功能设计、用户体验、核心竞争力等方面进行了详细的分析和比较。 一、用户规模分析 报告显示,...

    新浪腾讯微博分享demo

    本篇文章将深入探讨“新浪腾讯微博分享demo”,这是一个专为Android平台设计的示例项目,它实现了通过Oauth2.0协议与新浪微博和腾讯微博的无缝对接,支持文字和图片的分享功能。以下我们将详细解析这个项目的重点...

    腾讯微博模拟登陆

    这个案例是关于“腾讯微博模拟登陆”的,尽管它可能不是最新的技术,但仍然具有一定的学习价值。我们将探讨模拟登录的基本概念、涉及到的技术以及如何针对腾讯微博进行模拟登录。 首先,模拟登录是指通过编程方式...

    腾讯微博接口调用

    腾讯微博接口调用是开发人员与腾讯微博平台交互的重要手段,允许开发者通过编程方式获取微博数据、发布新微博、管理用户关注等。本教程将深入探讨如何利用腾讯微博的API来实现各种功能。 首先,我们需要了解腾讯...

    qq和新浪微博授权登陆

    QQ和新浪微博授权登录是互联网应用中常见的用户身份验证方式,特别是在移动端。这两种授权登录机制允许用户使用已有的QQ或微博账号快速注册并登录其他第三方应用,简化了用户的账户管理流程,同时也为开发者提供了...

    新浪腾讯微博oauth2.0登录授权及转发实例

    (2) 客户端引导用户到腾讯微博授权页面。 (3) 用户同意后,腾讯会返回授权码。 (4) 通过授权码换取Access Token和过期时间。 (5) 使用Access Token进行数据交互。 4. 内容转发实现 一旦获取了用户授权,应用可以...

    腾讯微博API_SDK_PHP示例

    1. **OAuth认证**:腾讯微博API使用OAuth 2.0进行授权,这是互联网上广泛采用的一种安全授权协议。开发者需要先注册应用获取App Key和App Secret,然后通过OAuth流程获取用户授权,才能访问用户的微博数据。 2. **...

    分享到新浪,腾讯微博

    1. **授权流程**:在分享到新浪或腾讯微博之前,应用需要获取用户的授权。这通常通过OAuth协议完成,用户在授权页面上登录微博账号并同意应用访问权限,然后返回一个访问令牌用于后续的API调用。 2. **API调用**:...

Global site tag (gtag.js) - Google Analytics