三方登錄之新浪微博

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()的回調很重要,不回調的話會報錯。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章