1、 申請應用程序的APP_KEY
在這一步中,您需要在微博開放平臺上,對您的應用進行註冊,並獲取APP_KEY,添加應用的授權回調頁(Redirect URI)。
詳情:移動客戶端接入
2、註冊應用程序的包名和簽名
您需要在微博開放平臺上註冊應用程序的包名和簽名後,才能正確進行授權。
請注意:包名和簽名未註冊,或者簽名註冊不正確,都會導致無法授權。
應用程序包名:指AndroidManifest.xml
文件中,package
標籤所代表的內容。
應用程序簽名:該簽名是通過官方提供的簽名工具生成的MD5值。
3、集成sdk
3.1、添加依賴:
implementation 'com.sina.weibo.sdk:core:4.4.3:openDefaultRelease@aar'
4、使用
4.1、替換成自己應用的 APP_KEY 等參數
鑑於目前有很多第三方開發直接拷貝並使用Demo中的Constants類,因此,有必要說明,第三方開發者需要將Constants類中的各種參數替換成自己應用的參數,請仔細閱讀代碼註釋。
public interface Constants {
/** 當前 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";
}
4.2、初始化微博SDK
WbSdk.install(this,
new AuthInfo(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE));
其中:APP_KEY、 REDIRECT_URL、 SCOPE需要替換成第三方應用申請的內容。
4.3、實現WbAuthListener接口,調用授權
public class Test1Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test1);
WbSdk.install(this,
new AuthInfo(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE));
SsoHandler ssoHandler=new SsoHandler(this);
ssoHandler.authorizeClientSso(new SelfWbAuthListener());
}
private class SelfWbAuthListener implements com.sina.weibo.sdk.auth.WbAuthListener {
@Override
public void onSuccess(final Oauth2AccessToken token) {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (token.isSessionValid()) {
// save Token to SharedPreferences
Toast.makeText(Test1Activity.this,
"授權成功", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public void cancel() {
Toast.makeText(Test1Activity.this, "取消授權", Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(WbConnectErrorMessage errorMessage) {
Toast.makeText(Test1Activity.this, errorMessage.getErrorMessage(), Toast.LENGTH_LONG).show();
}
}
}
4.3.1、Web 授權,直接調用以下函數:
mSsoHandler = new SsoHandler(WBAuthActivity.this);
mSsoHandler.authorizeWeb(new WbAuthListener());
4.3.2、SSO授權,需要調用以下函數:
mSsoHandler = new SsoHandler(WBAuthActivity.this);
mSsoHandler. authorizeClientSso(new WbAuthListener());
4.3.3、all In one方式授權,需要調用以下函數:
mSsoHandler = new SsoHandler(WBAuthActivity.this);
mSsoHandler. authorize(new WbAuthListener());
注:此種授權方式會根據手機是否安裝微博客戶端來決定使用sso授權還是網頁授權,如果安裝有微博客戶端 則調用微博客戶端授權,否則調用Web頁面方式授權 參見pdf文檔說明 *
以上三種授權需要在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);
}
}
如果使用的fragment,同樣也要調用onActivityResult()。
onActivityResult()的回調很重要,不回調的話會報錯。