QQ第三方登錄

創(chuàng)建并配置工程

新建工程并導(dǎo)入SDK的jar文件

創(chuàng)建一個(gè)android項(xiàng)目腻扇,打開project視圖模式,在根目錄-app-libs的文件夾下添加open-sdk.jar文件和mta_sdk_x.x.x.jar文件,右擊open-sdk.jar文件和mta_sdk_x.x.x.jar文件几颜,選取add as library笼踩,將jar包導(dǎo)入到項(xiàng)目當(dāng)中。
SDK下載地址
SDK中包含一個(gè)demo谷市、jar势木、Android API調(diào)用說明書和獲取簽名的apk

配置AndroidManifest

在應(yīng)用的AndroidManifest.xml增加配置的<application>節(jié)點(diǎn)下增加以下配置(注:不配置將會(huì)導(dǎo)致無法調(diào)用API)

<activity
android:name="com.tencent.tauth.AuthActivity" 
android:noHistory="true" 
android:launchMode="singleTask" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
//這一個(gè)是用來設(shè)置你的這個(gè)activity可以跳轉(zhuǎn)到瀏覽器中的
<data android:scheme="tencent222222" />
//這里的222222是指我們的APPID,我這里使用的是騰訊提供的例子歌懒,
//因?yàn)樽约荷暾?qǐng)開發(fā)者應(yīng)用比較麻煩有需要的朋友們可以自己去處理
</intent-filter>
</activity>

SDK_V2.0引入了AssistActivity啦桌,開發(fā)者需在androidManifest.xml中注冊(cè)。代碼如下:

<activity android:name="com.tencent.connect.common.AssistActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize" 
/>

到此為止創(chuàng)建并配置工程完成

實(shí)現(xiàn)回調(diào)函數(shù)

實(shí)現(xiàn)登錄回調(diào)函數(shù)

    private class BaseUiListener implements IUiListener {
        @Override
        public void onComplete(Object response) {
            //這里官方給出的onComplete的方法的參數(shù)是JSONObject類型的
            // 但是我們?cè)诠こ讨刑砑拥亩际荗bject的及皂,這里我們就用Object的甫男,因?yàn)?            // 改成JSONObject的會(huì)報(bào)錯(cuò)
            //將response強(qiáng)制轉(zhuǎn)換成JSONObject
            JSONObject result = (JSONObject) response;
            //如果返回的數(shù)據(jù)為空,則退出
            if (response == null)
                return;
            if (result != null && result.length() == 0)
                return;
            //登錄成功验烧,處理返回的數(shù)據(jù)
            doComplete(result);
        }

        protected void doComplete(JSONObject values) {
        }

        @Override
        public void onError(UiError e) {
        }

        @Override
        public void onCancel() {
        }
    }

實(shí)現(xiàn)獲取用戶信息的回調(diào)函數(shù)

    private class InfoUiListener implements IUiListener {
        @Override
        public void onComplete(Object response) {
            //這里官方給出的onComplete的方法的參數(shù)是JSONObject類型的
            // 但是我們?cè)诠こ讨刑砑拥亩际荗bject的板驳,這里我們就用Object的,因?yàn)?            // 改成JSONObject的會(huì)報(bào)錯(cuò)
            //將response強(qiáng)制轉(zhuǎn)換成JSONObject
            JSONObject result = (JSONObject) response;
            //如果返回的數(shù)據(jù)為空碍拆,則退出
            if (response == null)
                return;
            if (result != null && result.length() == 0)
                return;
            //登錄成功若治,處理返回的數(shù)據(jù)
            doComplete(result);
        }

        protected void doComplete(JSONObject values) {
        }

        @Override
        public void onError(UiError e) {
        }

        @Override
        public void onCancel() {
        }
    }

這里的代碼和上面的代碼一樣慨蓝,因?yàn)樽钪匾牟糠謉oComplete還沒寫,在這里特別注意的是doComplete使用protected修飾的端幼,在以后新建的BaseUiListener 和InfoUiListener 對(duì)象中需要重寫這個(gè)方法礼烈。

QQ登錄并獲取用戶信息

創(chuàng)建Tencent實(shí)例

mTencent = Tencent.createInstance(APP_ID,this.getApplicationContext());
// 其中APP_ID是分配給第三方應(yīng)用的appid,類型為String婆跑。
// 1.4版本:此處需新增參數(shù)此熬,傳入應(yīng)用程序的全局context,
//可通過activity的getApplicationContext方法獲取

創(chuàng)建登錄回調(diào)實(shí)例

BaseUiListener baseUiListener = new BaseUiListener(){
            //重寫doComplete方法
            @Override
            protected void doComplete(JSONObject values) {
                try {
                    //如果ret=-1滑进,則為登錄失敗
                    if (values.getInt("ret")==0) {
                        String token = values.getString(Constants.PARAM_ACCESS_TOKEN);
                        String expires = values.getString(Constants.PARAM_EXPIRES_IN);
                        String openID = values.getString(Constants.PARAM_OPEN_ID);
                        //**下面這兩步設(shè)置很重要,如果沒有設(shè)置,返回為空**
                        mTencent.setOpenId(openID);
                        mTencent.setAccessToken(token, expires);
                        //獲取用戶信息
                        getuserInfo();
                    }
                } catch (JSONException e) {
                    e.printStackTrace();

                }
            }
        };

實(shí)現(xiàn)登錄

if (!mTencent.isSessionValid())
            mTencent.login(this,Scope,loginUiListener);

到此完成QQ的登錄

創(chuàng)建UserInfo實(shí)例

UserInfo qqInfo = new UserInfo(getContext(),mTencent.getQQToken());

創(chuàng)建獲取其用戶信息回調(diào)實(shí)例

InfoUiListener infoUiListener = new InfoUiListener(){
            //重寫doComplete方法
            @Override
            protected void doComplete(JSONObject values) {
                super.doComplete(values);
                //這里用到的是Gson解析Json數(shù)據(jù)犀忱,詳細(xì)的Gson解析,這不多說扶关,
                //我們獲取到的信息很多阴汇,我選擇了一些輸出
                Gson gson = new Gson();
                userData = gson.fromJson(values.toString() , UserData.class);
                System.out.println(userData.getCity());
                System.out.println(userData.getFigureurl_qq_1());
                System.out.println(userData.getGender());
                System.out.println(userData.getNickname());
                System.out.println(userData.getProvince();
            }
        };

我們獲取到的用戶信息包括

{
//is_yellow_year_vip代表的是是否為年費(fèi)黃磚VIP
"is_yellow_year_vip": "0",
"ret": 0,
//figureurl_qq_1代表的是QQ頭像,大小為40
"figureurl_qq_1":
"http://q.qlogo.cn/qqapp/222222/8C75BBE3DC6B0E9A64BD31449A3C8CB0/40",
//figureurl_qq_2代表的是QQ頭像节槐,大小為40
"figureurl_qq_2":
"http://q.qlogo.cn/qqapp/222222/8C75BBE3DC6B0E9A64BD31449A3C8CB0/100",
//nickname代表的是QQ昵稱
"nickname": "小羅",
//yellow_vip_level代表的是黃磚的VIP等級(jí)
"yellow_vip_level": "0",
"msg": "",
//figureurl_1代表的是QQ空間的頭像鲫寄,大小為50
"figureurl_1":
"http://qzapp.qlogo.cn/qzapp/222222/8C75BBE3DC6B0E9A64BD31449A3C8CB0/50",
"vip": "0",
"level": "0",
//figureurl_2代表的是QQ空間頭像,大小為100
"figureurl_2":
"http://qzapp.qlogo.cn/qzapp/222222/8C75BBE3DC6B0E9A64BD31449A3C8CB0/100",
//is_yellow_vip代表的是是否為黃磚
"is_yellow_vip": "0",
//gender代表的是性別
"gender": "男",
figureurl代表的是QQ空間頭像疯淫,大小為30
"figureurl":
"http://qzapp.qlogo.cn/qzapp/222222/8C75BBE3DC6B0E9A64BD31449A3C8CB0/30"
}

獲取用戶信息

qqInfo.getUserInfo(InfoUiListener);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末地来,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子熙掺,更是在濱河造成了極大的恐慌未斑,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件币绩,死亡現(xiàn)場(chǎng)離奇詭異蜡秽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)缆镣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門芽突,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人董瞻,你說我怎么就攤上這事寞蚌。” “怎么了钠糊?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵挟秤,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我抄伍,道長(zhǎng)艘刚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任截珍,我火速辦了婚禮攀甚,結(jié)果婚禮上箩朴,老公的妹妹穿的比我還像新娘。我一直安慰自己秋度,他們只是感情好炸庞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著静陈,像睡著了一般燕雁。 火紅的嫁衣襯著肌膚如雪诞丽。 梳的紋絲不亂的頭發(fā)上鲸拥,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音僧免,去河邊找鬼刑赶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛懂衩,可吹牛的內(nèi)容都是我干的撞叨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼浊洞,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼牵敷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起法希,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤枷餐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后苫亦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體毛肋,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年屋剑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了润匙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡唉匾,死狀恐怖孕讳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情巍膘,我是刑警寧澤卫病,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站典徘,受9級(jí)特大地震影響蟀苛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜逮诲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一帜平、第九天 我趴在偏房一處隱蔽的房頂上張望幽告。 院中可真熱鬧,春花似錦裆甩、人聲如沸冗锁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽冻河。三九已至,卻和暖如春茉帅,著一層夾襖步出監(jiān)牢的瞬間叨叙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工堪澎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留擂错,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓樱蛤,卻偏偏與公主長(zhǎng)得像钮呀,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子昨凡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1. 注冊(cè)成為開發(fā)者爽醋,創(chuàng)建應(yīng)用,獲取appid便脊,這個(gè)appid后面要用到蚂四。詳情步驟請(qǐng)查看官網(wǎng)鏈接 2.在你的And...
    丶Lost_Deer閱讀 2,199評(píng)論 0 2
  • qq登錄有很多方式,在這里做一個(gè)筆記記錄一下qq的第三方登錄就轧,并且獲取到個(gè)人信息首先在騰訊的開發(fā)者平臺(tái)注冊(cè)開發(fā)者賬...
    不識(shí)水的魚閱讀 1,232評(píng)論 0 12
  • QQ互聯(lián) JS-SDK 對(duì)于自己最近在做QQ第三方登錄的過程過個(gè)簡(jiǎn)單的總結(jié)和筆記证杭。方便自己以后的記憶也希望可以幫...
    浩3108閱讀 7,774評(píng)論 8 11
  • 準(zhǔn)備工作_OAuth2.0 接入QQ登錄前,網(wǎng)站需首先進(jìn)行申請(qǐng)妒御,獲得對(duì)應(yīng)的appid與appkey解愤,以保證后續(xù)流程...
    君惜丶閱讀 8,009評(píng)論 7 29
  • 前言 最近在公司應(yīng)用中集成QQ登錄的時(shí)候遇到一些波折(坑點(diǎn)),覺得還是有必要記錄一下. 一.集成SDK 1.集成官...
    herbsun閱讀 24,645評(píng)論 43 53