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开发,就如博客签名一样, ...
随机推荐
- 从最简单的HelloWorld理解MVP模式
版权声明:本文为博主原创文章,转载请注明出处:http://www.cnblogs.com/joy99/p/6116855.html 大多数编程语言相关的学习书籍,都会以hello,world这个典型 ...
- MYCAT介绍
为什么需要MyCat? http://www.mycat.org.cn/ http://www.csdn.net/article/2015-07-16/2825228
- 解决安装SQL Server2008失败的问题
安装SQL Server2008时遇到"2008安装错误 必须重新启动计算机才能安装 SQL Server". 解决办法:HKEY_LOCAL_MACHINE\SYSTEM\Cu ...
- request,response,session
1.request.getParameter("key")接受的是来自客户登陆端的数据,接受的是post或get方式传送的value. 2.请求的默认字符集是ISO-8859-1, ...
- kotlin使用手记
几个月前接触过scala,当时下载一个库用maven引入,弄了很久,后来觉得没起一个项目有点重量级,一次偶然机会在升级idea的时候,发现jetbrains官网出了一门新的jvm编程语言kotlin, ...
- Fibonacci数列
问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入格式 输入包含一个整数n ...
- 简单的玩玩etimer <contiki学习笔记之九>
好吧,我承认etimer有点小复杂,主要是它似乎和contiki的process搅在一起,到处都在call_process.那就先搜搜contiki下的etimer的example看看,然后再试着写一 ...
- 【转】Installing the libv8 Ruby gem on Centos 5.8
转自:http://appsintheopen.com/posts/18-installing-the-libv8-ruby-gem-on-centos-5-8 First, Centos 5.8 s ...
- Java网页数据采集器[中篇-数据存储]【转载】
本期概述 上期我们学习了html页面的数据采集,为了方便我们今后来调用收集到的数据,首先我们需要学习下如何将这些采集到的数据存储起来(MySql数据库). 数据采集页面 2011-2012赛季英超球队 ...
- c# 反射学习笔记
首先了解C#反射的概念,反射是一个运行库类型发现的过程.通过反射可以得到一个给定程序集所包含的所有类型的列表, 这个列表包括给定类型中定义的方法.字段.属性和事件.也可以动态的发现一组给定类支持的借口 ...