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

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

1.初始化SsoHandler

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

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

2.开始授权

 mSsoHandler.authorize(new MyWeiboAuthListener(new LoginWeiboGetUserInfoListener()));
private static class MyWeiboAuthListener implements WeiboAuthListener { private RequestListener mRequestUserInfoListener = null; public MyWeiboAuthListener(RequestListener requestUserInfoListener){
this.mRequestUserInfoListener = requestUserInfoListener;
} @Override
public void onCancel() {
// TODO Auto-generated method stub
Toast.makeText(mContext, "已取消微博登录", Toast.LENGTH_SHORT).show();
} @Override
public void onComplete(Bundle values) {
// TODO Auto-generated method stub
mAccessToken = Oauth2AccessToken.parseAccessToken(values);
if (mAccessToken.isSessionValid()) {
// 保存 Token 到 SharedPreferences
WeiboParameters weiboParameters = new WeiboParameters(
Constants.APP_KEY);
weiboParameters.put("access_token", mAccessToken.getToken()); if( mWeiboRunner == null ){
mWeiboRunner = new AsyncWeiboRunner(
mContext);
} if( mRequestUserInfoListener == null ){
return;
}
mWeiboRunner.requestAsync(WEIBO_USERID_URL,
weiboParameters, "POST",
mRequestUserInfoListener); } else {
// 当您注册的应用程序签名不正确时,就会收到 Code,请确保签名正确
String code = values.getString("code", "");
Log.i(TAG, "应用签名不正确 code = " + code);
Toast.makeText(mContext, "微博认证失败", Toast.LENGTH_SHORT).show(); }
} @Override
public void onWeiboException(WeiboException arg0) {
// TODO Auto-generated method stub } } /**
* 获取用户信息
* @author ReCwert
*
*/
private static class LoginWeiboGetUserInfoListener implements RequestListener { @Override
public void onComplete(String result) {
// TODO Auto-generated method stub
JSONObject userObject = JSON.parseObject(result);
String weiboUid = userObject.getString("uid");
if( TextUtils.isEmpty(weiboUid)){
Log.e(TAG, "weibo uid = null ");
return;
} Log.i(TAG, "weibo uid = " + weiboUid );
uid = weiboUid;
WeiboParameters weiboParameters = new WeiboParameters(Constants.APP_KEY);
weiboParameters.put("uid", weiboUid);
weiboParameters.put("access_token", mAccessToken.getToken());
if( mWeiboRunner == null ){
mWeiboRunner = new AsyncWeiboRunner(
mContext);
} mWeiboRunner.requestAsync(WEIBO_USERINFO_URL, weiboParameters, "GET", new MyWeiboHandleUserInfoListener());
} @Override
public void onWeiboException(WeiboException exception) {
// TODO Auto-generated method stub
exception.printStackTrace(); } }
 /**
* 处理获取的用户信息
* @author ReCwert
*
*/
private static class MyWeiboHandleUserInfoListener implements RequestListener{ @Override
public void onComplete(String result) {
// TODO Auto-generated method stub
JSONObject userData = JSON.parseObject(result);
nickName = userData.getString("name");
headUrl = userData.getString("profile_image_url");
sex = userData.getString("gender");
Log.i(TAG, "uid = " + uid );
Log.i(TAG, "nickName = " + nickName);
Log.i(TAG, "headUrl = " + headUrl );
Log.i(TAG, "sex = " + sex);
} @Override
public void onWeiboException(WeiboException exception) {
// TODO Auto-generated method stub
exception.printStackTrace();
} }

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

 private static final String WEIBO_USERID_URL = "https://api.weibo.com/oauth2/get_token_info";
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

Android第三方授权(新浪微博篇)的更多相关文章

  1. Android 第三方授权(微信篇)

    0.申请开发者: https://open.weixin.qq.com/cgi-bin/frame?t=home/app_tmpl&lang=zh_CN 1.下载sdk包: https://o ...

  2. Android第三方授权(QQ篇)

    QQ授权比微信授权相对来说会方便一些 同样需要去官网下载sdk和导入sdk到自己的工程 http://wiki.connect.qq.com/%E7%A7%BB%E5%8A%A8%E5%BA%94%E ...

  3. android 第三方登录---新浪微博

    1.AndroidManiFest.xml设置,这里我只是简单的用授权,获取基本信息,所以只用了这一个 <!--微博--> <!-- 必须注册在微博授权,分享微博时候用到 --> ...

  4. Android第三方登陆之新浪微博Weibo篇(原生登陆授权)

    前言 Android第三方登录可以说是非常的常见,今天主要先说一下新浪微博第三方登陆授权. SDK版本支持 SDK v3.0已经发布了支持iPhone和Android的版本. 须将你的应用的包名签名信 ...

  5. 【转】【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料

    转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9057257 由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字 ...

  6. 【Android应用开发详解】实现第三方授权登录、分享以及获取用户资料

      由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字和图片等这样的效果,几经波折,查阅了一番资料,做了一个Demo.实现起来的效果还是不错的,不敢独享,决定写一个总结的教程,供大家互相 ...

  7. 使用ShareSDK实现第三方授权登录、分享以及获取用户资料效果,项目中包含:源码+效果图+项目结构图

    [Android应用开发详解]第01期:第三方授权认证(一)实现第三方授权登录.分享以及获取用户资料   由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字和图片等这样的效果,几经波折, ...

  8. [转]Android中Xposed框架篇—利用Xposed框架实现拦截系统方法

    一.前言 关于Xposed框架相信大家应该不陌生了,他是Android中Hook技术的一个著名的框架,还有一个框架是CydiaSubstrate,但是这个框架是收费的,而且个人觉得不怎么好用,而Xpo ...

  9. Android 第三方开源库收集整理(转)

    原文地址:http://blog.csdn.net/caoyouxing/article/details/42418591 Android开源库 自己一直很喜欢Android开发,就如博客签名一样,  ...

随机推荐

  1. Java中的Filter过滤器

    Filter简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件 ...

  2. Line去年营收超5亿美元 远超竞争对手WhatsApp

    原文地址: http://news.cnblogs.com/n/206072/ 凭借着修改表情取悦国际用户的做法,日本移动消息应用 Line 在全球的用户总数已经超过 4 亿.Line.微信.What ...

  3. SSL握手过程

    原文地址: http://my.oschina.net/u/1188877/blog/164982 一.SSL握手有三个目的:1. 客户端与服务器需要就一组用于保护数据的算法达成一致:2. 它们需要确 ...

  4. 放开Linux内核对用户进程可打开文件数和TCP连接的限制

    一. 检查linux内核uname -alsb_release -a 二. 用户进程可打开文件数限制1) vim /etc/security/limits.conf*       -      nof ...

  5. thinkphp模板中使用自定义函数

    注意:自定义函数要放在项目应用目录/common/common.php中. 这里是关键. 模板变量的函数调用格式:{$varname|function1|function2=arg1,arg2,### ...

  6. iOS开发——实用篇Swift篇&保存图片到相册

    保存图片到相册 最近在深入的学习关于swift相关技术,虽然海做不出什么好的东西,但是感觉收获不少,相信总有一样能用到,所以就总结了一下,希望大家喜欢! 1.OC中的写法 在OC中,我们需要保存图片到 ...

  7. sql优化-隐形转换危害

    level  整形字段 a:select * form t_user where level =2; b:select * form t_user where level ='2'; b里面的隐形字段 ...

  8. mysql 5.6 binlog组提交

    mysql 5.6 binlog组提交实现原理 http://blog.itpub.net/15480802/viewspace-1411356 Redo组提交 Redo提交流程大致如下 lock l ...

  9. 【ZZ】常用推荐算法

    http://liyonghui160com.iteye.com/blog/2082450 在推荐系统简介中,我们给出了推荐系统的一般框架.很明显,推荐方法是整个推荐系统中最核心.最关键的部分,很大程 ...

  10. java_redis3.0.3集群搭建

    redis3.0版本之后支持Cluster,具体介绍redis集群我就不多说,了解请看redis中文简介. 首先,直接访问redis.io官网,下载redis.tar.gz,现在版本3.0.3,我下面 ...