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开发,就如博客签名一样, ...
随机推荐
- SAE搭建WordPress教程 免费建WordPress博客站
SAE搭建WordPress教程 免费建WordPress博客站 WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设自己的网志.当然,用户也可以 ...
- MVC神韵---你想在哪解脱!(十四)
修正票价字段的精度 前面我们追加数据的时候遗留下来一个问题,就是在追加数据的时候,票价(Price)字段中输入的是9.99元,但是电影清单显示画面中该数据的票价字段显示为10元,这是为什么?这个问题发 ...
- 剑指OFFER之用两个栈实现队列(九度OJ1512)
题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型. 输入: 每个输入文件包含一个测试样例.对于每个测试样例,第一行输入一个n(1<=n<=100 ...
- 【WinForm】C# 采用POST登录京东
C# POST 传值登录 京东 想做一个DEMO 练练html的传值和接收,就用Winform 做了一个登录京东的程序. 首先参考的网址是: 艹蛋的青春じ 让我蛋疼ミ:http://www.cnblo ...
- Java基础-新建项目、包和类
1,新建项目
- POJ 3261 Milk Patterns 可重复k次的最长重复子串
Milk PatternsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://poj.org/problem?id=3261 Description ...
- androidstudio构建(或导入)工程(不用gradle)
获取源代码: ---assets ---libs ---res ---src 先备份AndroidManifest.xml,然后工程中只保留这四个文件夹,其他文件删除, 然后在studio中导入工程, ...
- Linux rsync 同步实践
目录[-] 1. rsync 同步的大致思路 2. rsync的安装 3. rsync的配置 4. rsync的基本操作 服务器端启动 注2. 实时同步 注3. rsync通过linux防火墙 公司网 ...
- [MEAN Stack] First API -- 4. Organize app structure
The app structure: Front-end: app.js /** * Created by Answer1215 on 12/9/2014. */ 'use strict'; func ...
- 获取文件属性信息之stat、fstat和lstat
UNIX文件系统是目录和文件组成的一种层次结构.目录(directory)是一个包含许多目录项的文件,在逻辑上,可以认为每个目录项都包含一个文件名,同时还包含说明该文件属性的信息.文件属性是指文件类型 ...