Android集成新浪微博第三方帐号登录
一、新浪微博开放平台中的配置
1、地址:http://open.weibo.com/,登录帐号(需要进行身份认证,提交身份证等信息)创建移动应用
2、填写相关信息进行创建,创建成功后进行应用信息的完善。
3、包名从项目中获取,签名可以通过提供的签名工具获取,也可以通过获取MD5的值将大写变小写,去掉冒号即可(使用不同的签名文件生成的MD5值是不一样的)。下载地址填写正常的网址格式即可。
4、填写填写,提交保存。
二、接入SDK到项目中
以Android Studio集成为例:在根目录的build.gradle中设置中央仓库,maven { url "https://dl.bintray.com/thelasterstar/maven/" }
1 buildscript { 2 repositories { 3 jcenter() 4 maven { url "https://dl.bintray.com/thelasterstar/maven/" } 5 } 6 dependencies { 7 classpath 'com.android.tools.build:gradle:2.3.3' 8 9 // NOTE: Do not place your application dependencies here; they belong 10 // in the individual module build.gradle files 11 } 12 } 13 14 allprojects { 15 repositories { 16 jcenter() 17 maven { url "https://dl.bintray.com/thelasterstar/maven/" } 18 } 19 }
在需要引入SDK的module目录的build.gradle中引入sdk-core依赖,compile 'com.sina.weibo.sdk:core:4.1.0:openDefaultRelease@aar'。
compile 'com.sina.weibo.sdk:core:4.1.0:openDefaultRelease@aar'
三、认证授权
1.首先初始化WbSdk对象(在你的应用的Application或者调用SDK功能代码前)
WbSdk.install(this,new AuthInfo(this, Constants.APP_KEY,Constants.REDIRECT_URL,Constants.SCOPE));
AuthInfo维护了授权需要的基本新,APP_KEY(开发平台生成的唯一key)、REDIRECT_URI(授权回调)、SCOPE(需要请求的权限功能,默认参考demo中的数据)。
2.初始化SsoHandler对象
mSsoHandler = new SsoHandler(MainActivity.this);SsoHandler是发起授权的核心类
3.调用授权
SDK中有三种模式的授权方案:
1)AuthorizeClientSSo:只通过微博客户端进行授权
mSsoHandler.authorizeClientSso(new SelfWbAuthListener());
2)AuthorizeWeb:通过SDK自带的WebView打开H5页面进行授权
mSsoHandler.authorizeWeb(new SelfWbAuthListener());
3)Authorize:如果安装了微博客户端则通过客户端授权,否则通过Web方式授权
mSsoHandler.authorize(new SelfWbAuthListener());
SelfWbAuthListener:授权结果回调,实现WbAuthListener接口
onSuccess:授权成功回调,返回Oauth2AccessToken对象,封装了登录相关信息
onFailure:授权失败回调
cancel:授权取消回调
注意:要接受到授权的相关数据,必须在当前Activity或者Fragment的onActivityResult方法中添加SSOhandler的回调,如下图
1 @Override 2 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 3 super.onActivityResult(requestCode, resultCode, data); 4 // SSO授权回调,必须重写 5 if (mSsoHandler != null) { 6 mSsoHandler.authorizeCallBack(requestCode, resultCode, data); 7 } 8 }
4.在manifest中设置权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
四、通过接口获取用户信息
注意:新版本的sdk已经移除了openapi功能(包括获取用户信息等方法),如果你想在授权后获取用户信息,请参考open api接口文档 微博开放平台api,使用自己的网络引擎请求数据。
请求url格式(https://api.weibo.com/2/users/show.json?access_token=&uid=),只能使用Get方式进行请求。
微博开放API地址:
http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI
五、微博分享
1.在分享当前页面的Activity实现WbShareCallback接口,重写三个方法实现分享结果回调
onWbShareSuccess()、onWbShareCancel()、onWbShareFail()
2.初始化WbShareHandler,并注册应用
mWbShareHandler = new WbShareHandler(this);
mWbShareHandler.registerApp();
3.分享微博
WeiboMultiMessage weiboMultiMessage = new WeiboMultiMessage();
weiboMultiMessage.textObject = getTextObj();
mWbShareHandler.shareMessage(weiboMultiMessage,false);
1 private TextObject getTextObj() { 2 TextObject textObject = new TextObject(); 3 textObject.text = "我正在使用微博客户端发博器分享文字"; 4 textObject.title = "1024wawa"; 5 textObject.actionUrl = "http://www.baidu.com"; 6 return textObject; 7 }
4.处理分享回调,重写onNewIntent方法
mWbShareHandler.doResultIntent(intent,this);