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);

 

 

posted @ 2017-10-23 17:46  XC_main  阅读(6629)  评论(0编辑  收藏  举报