Android第三方认证新浪微博,相对微信,也比较简单,并且sina给了一个sdk和sdkdemo,这个demo封装了许多,但是自己不准备记录这个demo,而是直接使用sdk

同样去sina官方下载sdk,自己去搜吧,地址不给了

1.初始化SsoHandler

1 AuthInfo mWeiboAuthInfo = new AuthInfo(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE);2 SsoHandler mSsoHandler = new SsoHandler(this, mWeiboAuthInfo);

其中几个常量的解释可以到官网查看

2.开始授权

 1 mSsoHandler.authorize(new MyWeiboAuthListener(new LoginWeiboGetUserInfoListener()));     2 private static class MyWeiboAuthListener implements WeiboAuthListener { 3  4         private RequestListener mRequestUserInfoListener = null; 5          6         public MyWeiboAuthListener(RequestListener requestUserInfoListener){ 7             this.mRequestUserInfoListener = requestUserInfoListener; 8         } 9         10         @Override11         public void onCancel() {12             // TODO Auto-generated method stub13             Toast.makeText(mContext, "已取消微博登录", Toast.LENGTH_SHORT).show();14         }15 16         @Override17         public void onComplete(Bundle values) {18             // TODO Auto-generated method stub19             mAccessToken = Oauth2AccessToken.parseAccessToken(values);20             if (mAccessToken.isSessionValid()) {21                 // 保存 Token 到 SharedPreferences22                 WeiboParameters weiboParameters = new WeiboParameters(23                         Constants.APP_KEY);24                 weiboParameters.put("access_token", mAccessToken.getToken());25 26                 if( mWeiboRunner == null ){27                     mWeiboRunner = new AsyncWeiboRunner(28                         mContext);29                 }30                 31                 if( mRequestUserInfoListener == null ){32                     return;33                 }34                 mWeiboRunner.requestAsync(WEIBO_USERID_URL,35                         weiboParameters, "POST",36                         mRequestUserInfoListener);37 38             } else {39                 // 当您注册的应用程序签名不正确时,就会收到 Code,请确保签名正确40                 String code = values.getString("code", "");41                 Log.i(TAG, "应用签名不正确 code = " + code);42                 Toast.makeText(mContext, "微博认证失败", Toast.LENGTH_SHORT).show();43 44             }45         }46 47         @Override48         public void onWeiboException(WeiboException arg0) {49             // TODO Auto-generated method stub50 51         }52 53     }54 55 56 /**57      * 获取用户信息58      * @author ReCwert59      *60      */61     private static class LoginWeiboGetUserInfoListener implements RequestListener {62     63         @Override64         public void onComplete(String result) {65             // TODO Auto-generated method stub66             JSONObject userObject = JSON.parseObject(result);67             String weiboUid = userObject.getString("uid");68             if( TextUtils.isEmpty(weiboUid)){69                 Log.e(TAG, "weibo uid = null ");70                 return;71             }72             73             Log.i(TAG, "weibo uid = " + weiboUid );74             uid = weiboUid;75             WeiboParameters weiboParameters = new WeiboParameters(Constants.APP_KEY);76             weiboParameters.put("uid", weiboUid);77             weiboParameters.put("access_token", mAccessToken.getToken());78             if( mWeiboRunner == null ){79                 mWeiboRunner = new AsyncWeiboRunner(80                     mContext);81             }82             83             mWeiboRunner.requestAsync(WEIBO_USERINFO_URL, weiboParameters, "GET", new MyWeiboHandleUserInfoListener());84         }85 86         @Override87         public void onWeiboException(WeiboException exception) {88             // TODO Auto-generated method stub89             exception.printStackTrace();90             91         }92 93     }

 1 /** 2      * 处理获取的用户信息 3      * @author ReCwert 4      * 5      */ 6     private static class MyWeiboHandleUserInfoListener implements RequestListener{ 7  8         @Override 9         public void onComplete(String result) {10             // TODO Auto-generated method stub11             JSONObject userData = JSON.parseObject(result);12             nickName = userData.getString("name");13             headUrl = userData.getString("profile_image_url");14             sex = userData.getString("gender");15             Log.i(TAG, "uid = " + uid );16             Log.i(TAG, "nickName = " + nickName);17             Log.i(TAG, "headUrl = " + headUrl );18             Log.i(TAG, "sex = " + sex);19         }20 21         @Override22         public void onWeiboException(WeiboException exception) {23             // TODO Auto-generated method stub24             exception.printStackTrace();25         }26         27     }

可以看到,我们在第一个回调中只是获得了access_token,我们需要根据这个access_token去获取跟多的信息,比如去请求userid 和userinfo

1 private static final String WEIBO_USERID_URL = "https://api.weibo.com/oauth2/get_token_info";2 private static final String WEIBO_USERINFO_URL = "https://api.weibo.com/2/users/show.json";

当然,更多的信息获取的url在sina官方能够查看到
http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI#OAuth2

更多相关文章

  1. android permiss manager (安全软件获取权限 禁用 可用 提示状态)
  2. Android(安卓)自定义签字板
  3. 【Android(安卓)Developers Training】 97. 序言:访问通讯录数据
  4. Android(安卓)在OnCreate获取需要控件的高度,宽度,textview的行数
  5. Android获取手机相册图片
  6. Android(安卓)Kikat下由图片Uri获取Path的解决方案
  7. bitmap与canvas android
  8. flutter高德地图使用
  9. Android(安卓)Binder分析三:Natvie Service的获取和调用

随机推荐

  1. android BLE从入门到精通开发
  2. Android(安卓)Jetpack 系列篇(二) WorkMa
  3. Android 学习笔记-2010年10月
  4. android沉浸式状态栏和虚拟按键
  5. 教程:实现Android的不同精度的定位(基于网
  6. Android Studio 几个非常有用的工具
  7. Android里面WebView加载HTML里面点击按钮
  8. Android 保存浏览记录 SharedPreTools
  9. (翻译)VectorDrawables的使用
  10. android下TTS的传感器切换听筒和扬声器测