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導(dǎo)入
在你工程的主模塊下面修改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饱狂。
/** 當(dāng)前 DEMO 應(yīng)用的 APP_KEY,第三方應(yīng)用應(yīng)該使用自己的 APP_KEY 替換該 APP_KEY */
public static final String APP_KEY = "2045436852";
/**
* 當(dāng)前 DEMO 應(yīng)用的回調(diào)頁窿祥,第三方應(yīng)用可以使用自己的回調(diào)頁喻粹。
* 建議使用默認(rèn)回調(diào)頁:https://api.weibo.com/oauth2/default.html
*/
public static final String REDIRECT_URL = "https://api.weibo.com/oauth2/default.html";
/**
* WeiboSDKDemo 應(yīng)用對應(yīng)的權(quán)限,第三方開發(fā)者一般不需要這么多姐仅,可直接設(shè)置成空即可绰播。
* 詳情請查看 Demo 中對應(yīng)的注釋尤蒿。
*/
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";
//新浪微博初始化,對應(yīng)的參數(shù)分別是app_key,回調(diào)地址幅垮,和權(quán)限
private void initWebSDK() {
AuthInfo mAuthInfo = new AuthInfo(this, APP_KEY, REDIRECT_URL,SCOPE);
WbSdk.install(this,mAuthInfo);
}
實現(xiàn)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();
}
}
調(diào)用方法腰池,認(rèn)證授權(quán)
a. Web 授權(quán),直接調(diào)用以下函數(shù):
mSsoHandler = new SsoHandler(WBAuthActivity.this);
mSsoHandler.authorizeWeb(new WbAuthListener());
b.SSO授權(quán)忙芒,需要調(diào)用以下函數(shù):
mSsoHandler = new SsoHandler(WBAuthActivity.this);
mSsoHandler. authorizeClientSso(new WbAuthListener());
c.all In one方式授權(quán)示弓,需要調(diào)用以下函數(shù)
mSsoHandler = new SsoHandler(WBAuthActivity.this);
mSsoHandler. authorize(new WbAuthListener());
以上三種授權(quán)需要在Activity的onActivityResult函數(shù)中,調(diào)用以下方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (mSsoHandler != null) {
mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
}
}
4.開發(fā)配置
打開 https://open.weibo.com/apps/3198658453/info/advanced
我的應(yīng)用 - 應(yīng)用信息 - 高級信息 配置OAuth2.0 授權(quán)設(shè)置 授權(quán)回調(diào)頁面根據(jù)你APP配置的授權(quán)回調(diào)頁面配置呵萨。一般沒有修改都配置
https://api.weibo.com/oauth2/default.html
4.特殊說明 遇到的問題
1.獲取用戶信息地址:https://api.weibo.com/2/users/show.json?access_token=&uid= 使用的是get請求
2.在用新浪微博授權(quán)第三方app時奏属,授權(quán)失敗,log顯示
com.sina.weibo.sdk.exception.WeiboHttpException: {"error":"applications over the unaudited use restrictions!","error_code":21321,"request":"/2/users/show.json"}
問題說明: 是因為 在測試期 也就是 沒有 提交審核前 潮峦,新浪驗證比較嚴(yán)格 只允許 當(dāng)前申請APPKEY 用戶 測試囱皿, 其他用戶登錄測試都會報這個錯誤.
所以登錄測試時 只能用 你申請APPKEY 的用戶 ,或者 在管理中心-- 應(yīng)用信息-- 測試信息--添加你要使用的測試賬號 或者 提交審核