1、AndroidManiFest.xml设置,这里我只是简单的用授权,获取基本信息,所以只用了这一个

 <!--微博-->
<!-- 必须注册在微博授权,分享微博时候用到 -->
<activity
android:name= "com.sina.weibo.sdk.component.WeiboSdkBrowser"
android:configChanges= "keyboardHidden|orientation"
android:exported= "false"
android:windowSoftInputMode="adjustResize" >
</activity >

2,java调用

 public static final String SCOPE = "email,direct_messages_read,direct_messages_write,"
+ "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"
+ "follow_app_official_microblog," + "invitation_write";
public void weibo(){//直接调用该方法
// 获取当前已保存过的 Token
Oauth2AccessToken mAccessToken = AccessTokenKeeper.readAccessToken(this);
// 快速授权时,请不要传入 SCOPE,否则可能会授权不成功
//11111111换成你自己的app key,第二个就是之前设置那个回调页
AuthInfo mAuthInfo = new AuthInfo(this,"11111111","https://api.weibo.com/oauth2/default.html", SCOPE);
mSsoHandler = new SsoHandler(LoginActivity.this, mAuthInfo);
//Web---网页输入账号密码
//mSsoHandler.authorizeWeb(new AuthListener());
//sso---客户端
mSsoHandler. authorizeClientSso(new AuthListener());
//all In one先调用客户端,如果没有客户端就调用web
mSsoHandler. authorize(new AuthListener());
}

监听--从demo里抠出来的

 /**
* 微博认证授权回调类。
* 1. SSO 授权时,需要在 {@link #onActivityResult} 中调用 {@link SsoHandler#authorizeCallBack} 后
* 该回调才会被执行。
* 2. 非 SSO 授权时,当授权结束后,该回调就会被执行。
* 当授权成功后,请保存该 access_token、expires_in、uid 等信息到 SharedPreferences 中。
*/
class AuthListener implements WeiboAuthListener {
@Override
public void onComplete(Bundle values) {
// 从 Bundle 中解析 Token
mAccessToken = Oauth2AccessToken.parseAccessToken(values);
//从这里获取用户输入的 电话号码信息
String phoneNum = mAccessToken.getPhoneNum();
if (mAccessToken.isSessionValid()) {
// 显示 Token
// updateTokenView(false);
// 保存 Token 到 SharedPreferences
AccessTokenKeeper.writeAccessToken(LoginActivity.this, mAccessToken);
Toast.makeText(LoginActivity.this,"授权成功", Toast.LENGTH_SHORT).show();
//打印信息
String date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(
new java.util.Date(mAccessToken.getExpiresTime()));
String format = "Token:%1$s \\n有效期:%2$s";
Log.i("授权成功","信息111:"+String.format(format, mAccessToken.getToken(), date));
String message = String.format(format, mAccessToken.getToken(), date);
Log.i("授权成功","信息222:"+message);
if (true) {
message = "Token 仍在有效期内,无需再次登录。"+ "\n" + message;
}
Log.i("授权成功","信息333:"+message);
} else {
// 以下几种情况,您会收到 Code:
// 1. 当您未在平台上注册的应用程序的包名与签名时;
// 2. 当您注册的应用程序包名与签名不正确时;
// 3. 当您在平台上注册的包名和签名与您当前测试的应用的包名和签名不匹配时。
String code = values.getString("code");
String message = "授权失败";
if (!TextUtils.isEmpty(code)) {
message = message + "\nObtained the code: " + code;
}
Toast.makeText(LoginActivity.this, message, Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancel() {
Toast.makeText(LoginActivity.this,"取消", Toast.LENGTH_LONG).show();
}
public void onWeiboException(WeiboException e) {
Toast.makeText(LoginActivity.this,
"Auth exception : " + e.getMessage(), Toast.LENGTH_LONG).show();
}
}

回调

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Constants.ACTIVITY_OK){
// SSO 授权回调
// 重要:发起 SSO 登陆的 Activity 必须重写 onActivityResults
if (mSsoHandler != null) {
Log.i("新浪微博登陆返回","返回");
//不能少
mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
}
}
super.onActivityResult(requestCode, resultCode, data);
}

这样授权就有了,下边就是获取授权用户的信息了

3,利用Oauth2AccessToken获取信息

 // 获取用户信息接口
//mAccessToken可以是你之前授权获取的那个,也可以
// 获取当前已保存过的 Token
//Oauth2AccessToken mAccessToken = AccessTokenKeeper.readAccessToken(this);
UsersAPI mUsersAPI = new UsersAPI(LoginActivity.this, "你的APP_KEY", mAccessToken);
long uid = Long.parseLong(mAccessToken.getUid());
mUsersAPI.show(uid, mListener);

监听

 /**
* 微博 OpenAPI 回调接口。
*/
private RequestListener mListener = new RequestListener() {
@Override
public void onComplete(String response) {
if (!TextUtils.isEmpty(response)) {
//LogUtil.i(TAG, response);
// 调用 User#parse 将JSON串解析成User对象
User user = User.parse(response);
if (user != null) {
Toast.makeText(LoginActivity.this,
"获取User信息成功,用户昵称:" + user.screen_name,
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(LoginActivity.this, response, Toast.LENGTH_LONG).show();
}
}
} @Override
public void onWeiboException(WeiboException e) {
//LogUtil.e(TAG, e.getMessage());
ErrorInfo info = ErrorInfo.parse(e.getMessage());
Toast.makeText(LoginActivity.this, info.toString(), Toast.LENGTH_LONG).show();
}
};

微博官方的demo地址:https://github.com/sinaweibosdk/weibo_android_sdk

WeiboSDK

WeiboSDKDemo

												

android 第三方登录---新浪微博的更多相关文章

  1. Android第三方授权(新浪微博篇)

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

  2. 安卓Android第三方登录-QQ登录

    要实现QQ第三方登录,其实只需要一个封装类:QQLoginManager 几乎 三行代码 就实现QQ登录功能 这里先给出Github开源项目地址,项目下有详细的使用说明   下面就开始详细说一说怎么实 ...

  3. android 第三方登录 --- QQ

    1,jar包 2,配置AndroidManifest.xml <activity android:name=".login.LoginActivity" android:co ...

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

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

  5. egret打包android + android微信登录--小结

    公司用egret做了款游戏,需要打android包,做安卓端的微信登录,于是乎开始了第一安卓上的打包,正的是一脸懵 首先遇到的问题有如下: 1. egret打安卓包时经常运行不起来, 主要是gradl ...

  6. 实现QQ、微信、新浪微博和百度第三方登录(Android Studio)

    前言: 对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享: 各大开放平台注册账户获取AppK ...

  7. Android 实现QQ、微信、新浪微博和百度第三方登录

    前言: 对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享: 各大开放平台注册账户获取AppK ...

  8. Android中用友盟实现QQ的第三方登录

    //首先应该去友盟的官网注册你的账号,创建一个应用,获得它的APPkey,也可以用它的API上的appkey,下载SDK,下面根据API文档一步步实现就行了. //下面是友盟的APi文档 1.  产品 ...

  9. android开发学习——facebook第三方登录,看了你不会后悔

    给APP用原生android进行facebook第三方登录. 我们做一件事情,首先得了解其原理,这样才不会迷茫,才知道自己做到什么程度了,心里才会有底. 所以,第一步,了解第三方登录的原理:下面贴一些 ...

随机推荐

  1. Android 在非Activity的类中调用startActivityForResult

    http://www.360doc.com/content/11/0720/10/7322578_134657348.shtml

  2. 【51Nod 1501】【算法马拉松 19D】石头剪刀布威力加强版

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1501 dp求出环状不连续的前缀和,剩下东西都可以算出来,比较繁琐. 时间 ...

  3. telnet建立http连接获取网页HTML内容

    利用telnet可以与服务器建立http连接,获取网页,实现浏览器的功能.它对于需要对http header进行观察和测试到时候非常方便.因为浏览器看不到http header. 步骤如下: 1. 运 ...

  4. 经典KMP算法C++与Java实现代码

    前言: KMP算法是一种字符串匹配算法,由Knuth,Morris和Pratt同时发现(简称KMP算法).KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的.比 ...

  5. Git的使用

    1.从Git服务器上获取项目   2.提交我的修改项目 3.发布新版本 4.修复bug

  6. 5 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之生产环境下drbd裂脑处理

    preface 公司的业务变更,导致服务器要搬迁,所以需要关闭服务器,然后到新地在开启服务器. 关机前确定drbd+heartbeat+mysql是正常使用的,没有异常,Heartbeat和drbd都 ...

  7. React.js入门笔记(续):用React的方式来思考

    本文主要内容来自React官方文档中的"Thinking React"部分,总结算是又一篇笔记.主要介绍使用React开发组件的官方思路.代码内容经笔者改写为较熟悉的ES5语法. ...

  8. mysql中find_in_set()函数的使用

    首先举个例子来说: 有个文章表里面有个type字段,它存储的是文章类型,有 1头条.2推荐.3热点.4图文等等 .现在有篇文章他既是头条,又是热点,还是图文,type中以 1,3,4 的格式存储.那我 ...

  9. 认识VTK工作原理

    VTk通过数据流实现变信息为图形数据的. 数据流一般为:source-filter--mapper--actor--render--renderwindow--interactor. 要理解工作原理, ...

  10. 媒体查询判断ipad和iPhone各版本

    /* 判断ipad */ @media only screen and (min-device-width : 768px) and (max-device-width : 1024px){ /* s ...