1.账号注册
注册地址
微博注册地址:https://open.weibo.com/
2.SDK获取
SDK获取地址
官方地址:
https://open.weibo.com/wiki/Sdk/android
github地址:
https://github.com/sinaweibosdk/weibo_android_sdk
3.SDK整合
1.jar导入
在你工程的主模块下面修改build.gradle文件,添加微博sdk的依赖
allprojects {
repositories {
jcenter()
mavenCentral()
maven { url "https://dl.bintray.com/thelasterstar/maven/" }
}
}
compile 'com.sina.weibo.sdk:core:4.3.6:openDefaultRelease@aar'
2.混淆
-keep class com.sina.weibo.sdk.** { *; }
3.使用方法
SDK初始化,在自定义Application类中初始化weiboSDK。
/** 当前 DEMO 应用的 APP_KEY,第三方应用应该使用自己的 APP_KEY 替换该 APP_KEY */
public static final String APP_KEY = "2045436852";
/**
* 当前 DEMO 应用的回调页,第三方应用可以使用自己的回调页。
* 建议使用默认回调页:https://api.weibo.com/oauth2/default.html
*/
public static final String REDIRECT_URL = "https://api.weibo.com/oauth2/default.html";
/**
* WeiboSDKDemo 应用对应的权限,第三方开发者一般不需要这么多,可直接设置成空即可。
* 详情请查看 Demo 中对应的注释。
*/
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";
//新浪微博初始化,对应的参数分别是app_key,回调地址,和权限
private void initWebSDK() {
AuthInfo mAuthInfo = new AuthInfo(this, APP_KEY, REDIRECT_URL,SCOPE);
WbSdk.install(this,mAuthInfo);
}
实现WbAuthListener接口
private class SelfWbAuthListener implements com.sina.weibo.sdk.auth.WbAuthListener{
@Override
public void onSuccess(final Oauth2AccessToken token) {
WBAuthActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
mAccessToken = token;
if (mAccessToken.isSessionValid()) {
// 显示 Token
updateTokenView(false);
// 保存 Token 到 SharedPreferences
AccessTokenKeeper.writeAccessToken(WBAuthActivity.this, mAccessToken);
Toast.makeText(WBAuthActivity.this,
R.string.weibosdk_demo_toast_auth_success, Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public void cancel() {
Toast.makeText(WBAuthActivity.this,
R.string.weibosdk_demo_toast_auth_canceled, Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(WbConnectErrorMessage errorMessage) {
Toast.makeText(WBAuthActivity.this, errorMessage.getErrorMessage(), Toast.LENGTH_LONG).show();
}
}
调用方法,认证授权
a. Web 授权,直接调用以下函数:
mSsoHandler = new SsoHandler(WBAuthActivity.this);
mSsoHandler.authorizeWeb(new WbAuthListener());
b.SSO授权,需要调用以下函数:
mSsoHandler = new SsoHandler(WBAuthActivity.this);
mSsoHandler. authorizeClientSso(new WbAuthListener());
c.all In one方式授权,需要调用以下函数
mSsoHandler = new SsoHandler(WBAuthActivity.this);
mSsoHandler. authorize(new WbAuthListener());
以上三种授权需要在Activity的onActivityResult函数中,调用以下方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (mSsoHandler != null) {
mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
}
}
4.开发配置
打开 https://open.weibo.com/apps/3198658453/info/advanced
我的应用 - 应用信息 - 高级信息 配置OAuth2.0 授权设置 授权回调页面根据你APP配置的授权回调页面配置。一般没有修改都配置
https://api.weibo.com/oauth2/default.html
4.特殊说明 遇到的问题
1.获取用户信息地址:https://api.weibo.com/2/users/show.json?access_token=&uid= 使用的是get请求
2.在用新浪微博授权第三方app时,授权失败,log显示
com.sina.weibo.sdk.exception.WeiboHttpException: {"error":"applications over the unaudited use restrictions!","error_code":21321,"request":"/2/users/show.json"}
问题说明: 是因为 在测试期 也就是 没有 提交审核前 ,新浪验证比较严格 只允许 当前申请APPKEY 用户 测试, 其他用户登录测试都会报这个错误.
所以登录测试时 只能用 你申请APPKEY 的用户 ,或者 在管理中心-- 应用信息-- 测试信息--添加你要使用的测试账号 或者 提交审核