新浪拼岳、百度、qq第三方登錄

1.開放平臺

新浪開放平臺
百度開放平臺
QQ開放平臺

2.步驟

2.1新浪
1况芒、注冊成為新浪微博開發(fā)者惜纸,創(chuàng)建應用,輸入基本信息绝骚。
2耐版、在新浪第三登錄接口下,需要輸入packagename和apk簽名压汪,調試程序時粪牲,apk簽名為debug簽名,而發(fā)布之后止剖,則會生成新的簽名指紋(ubuntu獲取簽名指紋命令:keytool -list -v -keystore 簽名路徑 -storepass 密碼),其中獲取md5簽名后腺阳,去除冒號并將大寫字母變?yōu)樾懠纯伞?br> 3、創(chuàng)建的應用RedirectUrl這個字段的值就是我們后臺項目中的應用信息——>高級信息——>OAuth2.0 授權設置中的授權回調頁這個字段穿香,需要我們填寫一個有效的地址亭引,一般為:https://api.weibo.com/oauth2/default.html

2017-10-28 19-01-14屏幕截圖.png
(注:兩個地址要相同)
4.使用
4.1在項目的gradle文件下加入maven { url "https://dl.bintray.com/thelasterstar/maven/" }
2017-10-28 19-08-38屏幕截圖.png

并且在app gradle下加入//微博sdk

compile 'com.sina.weibo.sdk:core:2.0.3:openDefaultRelease@aar'
compile files('libs/android-support-v4.jar')

在application入口初始化如下代碼

WbSdk.install(this,new AuthInfo(this, Constants.APP_KEY, Constants.REDIRECT_URL,Constants.SCOPE));
第三方應用應該使用自己的 APP_KEY 替換該 APP_KEY
建議使用默認回調頁 String REDIRECT_URL = "https://api.weibo.com/oauth2/default.html";

//sina
        mSsoHandler = new SsoHandler(this);

        mSsoHandler.authorize(new com.sina.weibo.sdk.auth.WbAuthListener(){
            @Override
            public void onSuccess(final Oauth2AccessToken token) {
                LoginActivity.this.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        mAccessToken = token;
                        if (mAccessToken.isSessionValid()) {
                            // 顯示 Token
//                        updateTokenView(false);
                            // 保存 Token 到 SharedPreferences
                            AccessTokenKeeper.writeAccessToken(LoginActivity.this, mAccessToken);

                            SPUtils.setSharedBooleanData(LoginActivity.this,"isLogin",true);
                            SPUtils.setSharedlongData(LoginActivity.this,"deadline", System.currentTimeMillis()+7*24*60*60*1000);

                            Toast.makeText(LoginActivity.this,
                                    R.string.weibosdk_demo_toast_auth_success, Toast.LENGTH_SHORT).show();

                            Intent intent = new Intent(LoginActivity.this,MainActivity.class);
                            intent.putExtra("sina",true);
                            intent.putExtra("loginWay",1);
                            LoginActivity.this.startActivity(intent);
                            LoginActivity.this.finish();
                        }
                    }
                });
            }

            @Override
            public void cancel() {
                Toast.makeText(LoginActivity.this,
                        R.string.weibosdk_demo_toast_auth_canceled, Toast.LENGTH_LONG).show();
            }

            @Override
            public void onFailure(WbConnectErrorMessage errorMessage) {
                Toast.makeText(LoginActivity.this, errorMessage.getErrorMessage(), Toast.LENGTH_LONG).show();
            }
        });

3.1百度
1.同理注冊為開發(fā)者
2.百度第三方登陸相對簡單,無需填包名和簽名
3.下載baidusdk皮获,倒入到工程中即可

baidu = new Baidu(clientId, LoginActivity.this);//client是分配給應用的id  

        baidu.authorize(LoginActivity.this, isForceLogin,isConfirmLogin,new BaiduDialog.BaiduDialogListener() {

            @Override
            public void onComplete(Bundle values) {

                new Thread(){
                    @Override
                    public void run() {
                        String json = "你好";
                        try {
                            json = baidu.request("https://openapi.baidu.com/rest/2.0/passport/users/getInfo", null, "GET");

                        } catch (IOException e) {
                            e.printStackTrace();
                        } catch (BaiduException e) {
                            e.printStackTrace();
                        }

                        final String finalJson = json;
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Util.logd("線程", Thread.currentThread()+"");
                                if (finalJson != null) {

                                    SPUtils.setSharedBooleanData(LoginActivity.this,"isLogin",true);
                                    SPUtils.setSharedlongData(LoginActivity.this,"deadline", System.currentTimeMillis()+7*24*60*60*1000);

                                    Gson gson = new Gson();
                                    BaiduLoginBean baiduLoginBean = gson.fromJson(finalJson, BaiduLoginBean.class);

                                    Intent intent = new Intent(LoginActivity.this,MainActivity.class);
                                    intent.putExtra("baidu", (Serializable) baiduLoginBean);
                                    intent.putExtra("loginWay",2);
                                    LoginActivity.this.startActivity(intent);
                                    LoginActivity.this.finish();
                                }
                            }
                        });

                    }
                }.start();


            }

            @Override
            public void onBaiduException(BaiduException e) {

            }

            @Override
            public void onError(BaiduDialogError e) {

            }

            @Override
            public void onCancel() {

            }
        });

4.1QQ
1.注冊成為開發(fā)者并創(chuàng)建應用
2.獲取id,下載qq sdk jar包即可

compile files('libs/open_sdk_r5886_lite.jar')

//qq
        // Tencent類是SDK的主要實現(xiàn)類焙蚓,開發(fā)者可通過Tencent類訪問騰訊開放的OpenAPI。
        // 其中APP_ID是分配給第三方應用的appid洒宝,類型為String购公。
        mTencent = Tencent.createInstance("1106499896", this.getApplicationContext());

        listener = new IUiListener(){
            @Override
            public void onComplete(Object o) {
                //"回調結果"

                SPUtils.setSharedBooleanData(LoginActivity.this,"isLogin",true);
                SPUtils.setSharedlongData(LoginActivity.this,"deadline", System.currentTimeMillis()+7*24*60*60*1000);

                Gson gson = new Gson();
                QQLoginBean qqLoginBean = gson.fromJson(o.toString(), QQLoginBean.class);

                Intent intent = new Intent(LoginActivity.this,MainActivity.class);
                intent.putExtra("qq", (Serializable) qqLoginBean);
                intent.putExtra("loginWay",3);
                LoginActivity.this.startActivity(intent);
                LoginActivity.this.finish();
            }

            @Override
            public void onError(UiError e) {
                Util.logd("onError:", "code:" + e.errorCode + ", msg:"
                        + e.errorMessage + ", detail:" + e.errorDetail);

            }

            @Override
            public void onCancel() {
                Util.logd("cancel","");
            }
        };

        if (!mTencent.isSessionValid())
        {
            mTencent.login(this, "all", listener);
        }

源碼地址

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市雁歌,隨后出現(xiàn)的幾起案子宏浩,更是在濱河造成了極大的恐慌,老刑警劉巖将宪,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绘闷,死亡現(xiàn)場離奇詭異橡庞,居然都是意外死亡,警方通過查閱死者的電腦和手機印蔗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門扒最,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人华嘹,你說我怎么就攤上這事吧趣。” “怎么了耙厚?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵强挫,是天一觀的道長。 經常有香客問我薛躬,道長俯渤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任型宝,我火速辦了婚禮八匠,結果婚禮上,老公的妹妹穿的比我還像新娘趴酣。我一直安慰自己梨树,他們只是感情好,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布岖寞。 她就那樣靜靜地躺著抡四,像睡著了一般。 火紅的嫁衣襯著肌膚如雪仗谆。 梳的紋絲不亂的頭發(fā)上指巡,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音胸私,去河邊找鬼厌处。 笑死,一個胖子當著我的面吹牛岁疼,可吹牛的內容都是我干的阔涉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼捷绒,長吁一口氣:“原來是場噩夢啊……” “哼瑰排!你這毒婦竟也來了?” 一聲冷哼從身側響起暖侨,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤椭住,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后字逗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體京郑,經...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡宅广,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了些举。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跟狱。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖户魏,靈堂內的尸體忽然破棺而出驶臊,到底是詐尸還是另有隱情,我是刑警寧澤叼丑,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布关翎,位于F島的核電站,受9級特大地震影響鸠信,放射性物質發(fā)生泄漏纵寝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一星立、第九天 我趴在偏房一處隱蔽的房頂上張望店雅。 院中可真熱鬧,春花似錦贞铣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至荐健,卻和暖如春酱畅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背江场。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工纺酸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人址否。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓餐蔬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親佑附。 傳聞我的和親對象是個殘疾皇子樊诺,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348