基于Android SDK腾讯微博授权认证实现

来源:互联网 发布:iphone拨号软件 编辑:程序博客网 时间:2024/06/11 16:23
基于Android SDK腾讯微博授权认证实现


2013年12月8日腾讯微博SDK使用研究

前言:小巫之前使用了新浪微博Android SDK开发了一个仿制官方新浪微博客户端的实现,现在我有了新的需求就是集成腾讯微博来开发一款应用,所以我就去腾讯微博开放平台(http://dev.t.qq.com/)取经了。创建了一个无线应用,拿到了自己的appkey和appScret。然后下载了Android SDK,我下了两个不同版本的SDK,一个是V1.2,另一个是最新的V2.0,童鞋们可以到这里下载(http://wiki.open.t.qq.com/index.php/SDK下载)。其实拿到SDK,里面就有开发文档和应用示例,import到项目当中去,研究一下就知道如何进行授权了。关于新浪微博和腾讯微博的授权方式,都是类似的,目前的版本都已经集成了SSO授权方式,什么是SSO授权方式不知道同学们有没有概念,就是快速授权,只要你安装了官方微博客户端,你只要使用这种授权方式会跳转到直接授权界面,而无需用户进行任何输入,就可以直接授权访问微博数据。

下面我就把Android SDK V1.2和Android SDK V2.0的授权认证的实现给大伙呈现一下。

当然你要把Android_SDK_v1.2.jar导入到你的项目当中去

步骤:
1.声明微博授权类
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. // 腾讯微博授权类  
  2.     private OAuthV2 oAuthV2;  

2.实例化微博授权对象
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. /** Android SDK v1.2授权方式 **/  
  2.             // 腾讯微博授权  
  3.             oAuthV2 = new OAuthV2(TengXunConstants.redirectUri);  
  4.             oAuthV2.setClientId(TengXunConstants.clientId);  
  5.             oAuthV2.setClientSecret(TengXunConstants.clientSecret);  
  6.   
  7.             // 关闭OAuthV2Client中默认开启QHttpClient.  
  8.             OAuthV2Client.getQHttpClient().shutdownConnection();  
  9.             intent = new Intent(mTabPager, OAuthV2AuthorizeWebView.class);  
  10.             intent.putExtra("oauth", oAuthV2);  
  11.             startActivityForResult(intent, 2);  


[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. package com.wwj.weiboClient.model;  
  2.   
  3. /** 
  4.  * 腾讯微博常量 
  5.  *  
  6.  * @author wwj 
  7.  *  
  8.  */  
  9. public interface TengXunConstants {  
  10.     // !!!请根据您的实际情况修改!!! 认证成功后浏览器会被重定向到这个url中 必须与注册时填写的一致  
  11.     String redirectUri = "http://blog.csdn.net/wwj_748";  
  12.     // !!!请根据您的实际情况修改!!! 换为您为自己的应用申请到的APP KEY  
  13.     String clientId = "801453361";  
  14.     // !!!请根据您的实际情况修改!!! 换为您为自己的应用申请到的APP SECRET  
  15.     String clientSecret = "522653bcd4d494011750ada52b7c758b";  
  16.   
  17. }  

3. 返回结果处理
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. @Override  
  2.     public void onActivityResult(int requestCode, int resultCode, Intent data) {  
  3.   
  4.         if (requestCode == 2) {  
  5.             if (resultCode == OAuthV2AuthorizeWebView.RESULT_CODE) {  
  6.                 oAuthV2 = (OAuthV2) data.getExtras().getSerializable("oauth");  
  7.                 if (oAuthV2.getStatus() == 0) {  
  8.                     Toast.makeText(mTabPager, "登录成功", Toast.LENGTH_SHORT)  
  9.                             .show();  
  10.                 }  
  11.             }  
  12.         }  
  13.         super.onActivityResult(requestCode, resultCode, data);  
  14.     }  



Android SDK V2.0的授权认证和SSO授权认证实现
同样要导入必须的jar包,将Android_SDK.jar、Android_SDK_component.jar和commons-httpclient-3.0.0.jar复制到libs文件夹中即可。

1. 腾讯微博授权方式
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. /** Android SDK V2.0 授权方式 **/  
  2.             intent = new Intent(mTabPager, Authorize.class);  
  3.             startActivity(intent);  



授权界面效果:




2. 腾讯微博SSO授权方式
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. /** Android SDK v2.0 SSO授权方式 **/  
  2.             long appid = Long.valueOf(Util.getConfig().getProperty("APP_KEY"));  
  3.             String app_secret = Util.getConfig().getProperty("APP_KEY_SEC");  
  4.             tengXunSSOAuth(appid, app_secret);  

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. /** 
  2.      *  
  3.      * 腾讯微博Android SDK V2.0 SSO授权方式 
  4.      *  
  5.      * @unused 未使用 
  6.      * @param appid 
  7.      * @param app_secret 
  8.      */  
  9.     private void tengXunSSOAuth(long appid, String app_secret) {  
  10.         final Context context = getActivity().getApplicationContext();  
  11.   
  12.         AuthHelper.register(context, appid, app_secret, new OnAuthListener() {  
  13.   
  14.             @Override  
  15.             public void onWeiBoNotInstalled() {  
  16.                 Toast.makeText(context, "onWeiBoNotInstalled"1000).show();  
  17.                 Intent i = new Intent(context, Authorize.class);  
  18.                 startActivity(i);  
  19.             }  
  20.   
  21.             @Override  
  22.             public void onWeiboVersionMisMatch() {  
  23.                 Toast.makeText(context, "onWeiboVersionMisMatch"1000).show();  
  24.                 Intent i = new Intent(context, Authorize.class);  
  25.                 startActivity(i);  
  26.             }  
  27.   
  28.             @Override  
  29.             public void onAuthFail(int result, String err) {  
  30.                 Toast.makeText(context, "result : " + result, 1000).show();  
  31.             }  
  32.   
  33.             @Override  
  34.             public void onAuthPassed(String name, WeiboToken token) {  
  35.                 Toast.makeText(context, "passed"1000).show();  
  36.                 Util.saveSharePersistent(context, "ACCESS_TOKEN",  
  37.                         token.accessToken);  
  38.                 Util.saveSharePersistent(context, "EXPIRES_IN",  
  39.                         String.valueOf(token.expiresIn));  
  40.                 Util.saveSharePersistent(context, "OPEN_ID", token.openID);  
  41.                 Util.saveSharePersistent(context, "OPEN_KEY", token.omasKey);  
  42.                 Util.saveSharePersistent(context, "REFRESH_TOKEN""");  
  43.                 Util.saveSharePersistent(context, "NAME", name);  
  44.                 Util.saveSharePersistent(context, "NICK", name);  
  45.                 Util.saveSharePersistent(context, "CLIENT_ID", Util.getConfig()  
  46.                         .getProperty("APP_KEY"));  
  47.                 Util.saveSharePersistent(context, "AUTHORIZETIME",  
  48.                         String.valueOf(System.currentTimeMillis() / 1000l));  
  49.             }  
  50.         });  
  51.   
  52.         AuthHelper.auth(mTabPager, "");  
  53.     }  


SSO授权效果图






以上就是新旧版本SDK的授权实现啦,只要授权搞定了,开发者们就可以轻松获取微博数据了,至于怎么实现你们看着办吧。
来源:http://blog.csdn.net/wwj_748/article/details/17198989