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



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 第三方登录---新浪微博的更多相关文章
- Android第三方授权(新浪微博篇)
Android第三方认证新浪微博,相对微信,也比较简单,并且sina给了一个sdk和sdkdemo,这个demo封装了许多,但是自己不准备记录这个demo,而是直接使用sdk 同样去sina官方下载s ...
- 安卓Android第三方登录-QQ登录
要实现QQ第三方登录,其实只需要一个封装类:QQLoginManager 几乎 三行代码 就实现QQ登录功能 这里先给出Github开源项目地址,项目下有详细的使用说明 下面就开始详细说一说怎么实 ...
- android 第三方登录 --- QQ
1,jar包 2,配置AndroidManifest.xml <activity android:name=".login.LoginActivity" android:co ...
- Android第三方登陆之新浪微博Weibo篇(原生登陆授权)
前言 Android第三方登录可以说是非常的常见,今天主要先说一下新浪微博第三方登陆授权. SDK版本支持 SDK v3.0已经发布了支持iPhone和Android的版本. 须将你的应用的包名签名信 ...
- egret打包android + android微信登录--小结
公司用egret做了款游戏,需要打android包,做安卓端的微信登录,于是乎开始了第一安卓上的打包,正的是一脸懵 首先遇到的问题有如下: 1. egret打安卓包时经常运行不起来, 主要是gradl ...
- 实现QQ、微信、新浪微博和百度第三方登录(Android Studio)
前言: 对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享: 各大开放平台注册账户获取AppK ...
- Android 实现QQ、微信、新浪微博和百度第三方登录
前言: 对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享: 各大开放平台注册账户获取AppK ...
- Android中用友盟实现QQ的第三方登录
//首先应该去友盟的官网注册你的账号,创建一个应用,获得它的APPkey,也可以用它的API上的appkey,下载SDK,下面根据API文档一步步实现就行了. //下面是友盟的APi文档 1. 产品 ...
- android开发学习——facebook第三方登录,看了你不会后悔
给APP用原生android进行facebook第三方登录. 我们做一件事情,首先得了解其原理,这样才不会迷茫,才知道自己做到什么程度了,心里才会有底. 所以,第一步,了解第三方登录的原理:下面贴一些 ...
随机推荐
- python基础-装饰器
一.什么是装饰器 装饰器本质就是函数,功能是为其他函数附加功能 二.装饰器遵循的原则 1.不修改被修饰函数的源代码 2.不修改被修饰函数的调用方式 三.实现装饰器的知识储备 装饰器=高阶函数+函数嵌套 ...
- ORACLE 导入导出
数据导出:1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中exp system/manager@TEST file=d:\daochu.dmp ...
- java spring mvc完整包下载地址
推荐使用该地址:http://maven.springframework.org/release/org/springframework/spring/ 更多详细参考地址:http://blog.cs ...
- Nginx高级使用
1.用户认证 客户端访问限制deny 客户端地址: 拒绝访问allow 客户端地址: 允许访问 rpm -q httpd-tools yum -y install httpd-tools user h ...
- jquery生成元素注册事件无效,及事件委托的使用
在页面加载完成之后,我们在页面操作用js生成html代码到页面,动态的添加元素带页面上 但是,这里可能很多人就必须碰到的一个问题就出现了,当你之后动态添加了元素到页面上,发现这个元素的绑定事件无效,如 ...
- IP地址,子网掩码、默认网关,DNS服务器是什么意思?
(一) 问题解析001. 问: IP地址,子网掩码,默认网关,DNS服务器,有什么区别呀?我知道没有IP地址就不能上网,我也知道没设DNS就不能上外网,可它们都有什么功能,有什么区别呢?还有真 ...
- MQTT开发笔记之《MQTT Server》
MQTT SERVER 性能测试报告 : http://w3yyb.sinaapp.com/archives/1601各个MQTT SERVER功能列表: http://blog.lenix.xyz/ ...
- Daily Build
Daily Build 是一件非常有意义的事情,也是敏捷开发中关于 “持续集成” 的一个实践.Daily Build 对于开发来说有如下好处: 保证了每次 check in 的代码可用,不会造成整个工 ...
- SVN如何查看修改的文件记录] 来源:Linux社区 作者:frogoscar
SVN如何查看修改的文件记录 [日期:2014-11-20] 来源:Linux社区 作者:frogoscar [字体:大 中 小] 主要是有四个命令,svn log用来展示svn 的版本作者 ...
- PHP图片上传类
前言 在php开发中,必不可少要用到文件上传,整理封装了一个图片上传的类也很有必要. 图片上传的流程图 一.控制器调用 public function upload_file() { if (IS_P ...