Android第三方授权(新浪微博篇)
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第三方授权(新浪微博篇)的更多相关文章
- Android 第三方授权(微信篇)
0.申请开发者: https://open.weixin.qq.com/cgi-bin/frame?t=home/app_tmpl&lang=zh_CN 1.下载sdk包: https://o ...
- Android第三方授权(QQ篇)
QQ授权比微信授权相对来说会方便一些 同样需要去官网下载sdk和导入sdk到自己的工程 http://wiki.connect.qq.com/%E7%A7%BB%E5%8A%A8%E5%BA%94%E ...
- android 第三方登录---新浪微博
1.AndroidManiFest.xml设置,这里我只是简单的用授权,获取基本信息,所以只用了这一个 <!--微博--> <!-- 必须注册在微博授权,分享微博时候用到 --> ...
- Android第三方登陆之新浪微博Weibo篇(原生登陆授权)
前言 Android第三方登录可以说是非常的常见,今天主要先说一下新浪微博第三方登陆授权. SDK版本支持 SDK v3.0已经发布了支持iPhone和Android的版本. 须将你的应用的包名签名信 ...
- 【转】【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9057257 由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字 ...
- 【Android应用开发详解】实现第三方授权登录、分享以及获取用户资料
由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字和图片等这样的效果,几经波折,查阅了一番资料,做了一个Demo.实现起来的效果还是不错的,不敢独享,决定写一个总结的教程,供大家互相 ...
- 使用ShareSDK实现第三方授权登录、分享以及获取用户资料效果,项目中包含:源码+效果图+项目结构图
[Android应用开发详解]第01期:第三方授权认证(一)实现第三方授权登录.分享以及获取用户资料 由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字和图片等这样的效果,几经波折, ...
- [转]Android中Xposed框架篇—利用Xposed框架实现拦截系统方法
一.前言 关于Xposed框架相信大家应该不陌生了,他是Android中Hook技术的一个著名的框架,还有一个框架是CydiaSubstrate,但是这个框架是收费的,而且个人觉得不怎么好用,而Xpo ...
- Android 第三方开源库收集整理(转)
原文地址:http://blog.csdn.net/caoyouxing/article/details/42418591 Android开源库 自己一直很喜欢Android开发,就如博客签名一样, ...
随机推荐
- [PoC]某B2B网站的一个反射型XSS漏洞
Author: Charlie 个人微博:http://YinYongYou.com 转载请注明出处. 工作过程纯粹手贱,测试了一下.然后发现了这么一个东西.有心利用能造成大范围影响.如可以自由修改用 ...
- CSS开启硬件加速 hardware accelerated
作者:孙志勇 微博 日期:2016年12月6日 一.时效性 所有信息都具有时效性.文章的价值,往往跟时间有很大关联.特别是技术类文章,请注意本文创建时间,如果本文过于久远,请读者酌情考量,莫要浪费时间 ...
- servlet--页面自刷新
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcepti ...
- CUDA从入门到精通
http://blog.csdn.net/augusdi/article/details/12833235 CUDA从入门到精通(零):写在前面 在老板的要求下.本博主从2012年上高性能计算课程開始 ...
- C++转义字符 & keyword
转义字符: 换行符 \n 水平制表符\t 纵向制表符 \v 退格符 \b 回车符 \r 进纸符 \f 报警(响铃)符 \a 反斜线 \\ 疑问号 \? 单引號 \' 双引號 \" ...
- 图形化OpenGL调试器 BuGLe [转]
BuGLe 结合图形化的OpenGL调试与选择的过滤器上的OpenGL命令流.调试器可以查看状态.纹理.framebuffers ,着色器,而过滤器允许日志,错误检查,自由相机控制,视频捕捉等. 主页 ...
- 【VBA研究】怎样将单元格数据赋给数组
作者:iamlaosong 将工作表中的数据赋给数组或者将数组的数据赋给工作表,一般有两种.一种是循环的方法,一个一个的传,这样的方法一般用于须要对每一个数据特别处理的场合,还有一种是一次性用赋值语句 ...
- POJ 3169 Layout(差分约束啊)
题目链接:http://poj.org/problem? id=3169 Description Like everyone else, cows like to stand close to the ...
- Mac OS 10.10 Yosemite正式版怎么升级 升级教程
苹果在2014年10月17号凌晨一点召开了新品发布会,推出了新的 iPad.iMac 产品,以及大家一直所期盼的 Mac OS 10.10 正式版系统.个人是从 Mac OS 10.10 的第一个测试 ...
- CentOS中查看系统资源占用情况的命令
用 'top -i' 看看有多少进程处于 Running 状态,可能系统存在内存或 I/O 瓶颈,用 free 看看系统内存使用情况,swap 是否被占用很多,用 iostat 看看 I/O 负载情况 ...