三方登錄-QQ登錄開(kāi)發(fā)-Android(as版本)

騰訊開(kāi)放平臺(tái)API

一岂傲、導(dǎo)入jar文件

gradle配置:

 compile files('libs/open_sdk_r5923_lite.jar')

二、 配置AndroidManifest

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

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<application>
<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" />
<data android:scheme="tencent你的AppId" />
</intent-filter>
</activity>
<application>

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

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

通過(guò)以上兩個(gè)步驟吴侦,工程就已經(jīng)配置完成了。接下來(lái)就可以在代碼里使用QQ互聯(lián)的SDK進(jìn)行開(kāi)發(fā)了坞古。

三备韧、創(chuàng)建實(shí)例并實(shí)現(xiàn)回調(diào)

建議在Application中配置全局的比較實(shí)用

public class MyApplication extendsApplication {
 
    public static Tencent mTencent;

    public static Tencent getmTencent() {
        return mTencent;
    }

    public static void setmTencent(Tencent mTencent) {
        SkyPineApplication.mTencent = mTencent;
    }

    @Override
    public void onCreate() {
        super.onCreate();
      

        // Tencent類是SDK的主要實(shí)現(xiàn)類,開(kāi)發(fā)者可通過(guò)Tencent類訪問(wèn)騰訊開(kāi)放的OpenAPI痪枫。
        // 其中APP_ID是分配給第三方應(yīng)用的appid织堂,類型為String。
        mTencent = Tencent.createInstance(ConfigurationSettings.TENCENT_APP_ID, this.getApplicationContext());

    }

接下來(lái)就是直接登錄奶陈、獲取用戶信息即可

登錄

/**
     * qq
     * scope    應(yīng)用需要獲得哪些API的權(quán)限易阳,由“,”分隔吃粒。
     * 例如:SCOPE = “get_user_info,add_t”潦俺;所有權(quán)限用“all”
     */
 public static final String ACOPE_ALL       = "all";

 BaseUiListener listener;

    public void login() {
        listener = new BaseUiListener();
        if (!mTencent.isSessionValid()) {
            mTencent.login(this, ACOPE_ALL, listener);
        }
    }

登錄回調(diào)

 private class BaseUiListener implements IUiListener {

        @Override
        public void onComplete(Object value) {
            Log.e(TAG, value.toString());
            //{"ret":0,"openid":"1BD6DE05A2A48E3AFF3905766855C30C","access_token":"072A085194740A54A85EA555D3AFE7EB",
            // "pay_token":"765794D8CB4DFE50B743E98A9BBFC239","expires_in":7776000,"pf":"desktop_m_qq-10000144-android-2002-",
            // "pfkey":"20d22c7e64c46aa138b69b5ebe89511a","msg":"","login_cost":493,"query_authority_cost":118,"authority_cost":24924}

            try {
                JSONObject jsonObject = (JSONObject) value;
                int ret = jsonObject.getInt("ret");
                if (ret == 0) {
                    showMessage("login success");
                  //此處登錄授權(quán)成功
                    String openId = jsonObject.getString(PARAM_OPEN_ID);
                    String access_token = jsonObject.getString(PARAM_ACCESS_TOKEN);
                    String expires = jsonObject.getString(PARAM_EXPIRES_IN);
                    mTencent.setOpenId(openId);
                    mTencent.setAccessToken(access_token, expires);
                    //獲取用戶信息
                     getUserInfo();
                } else {
                    showMessage("login failed");
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onError(UiError uiError) {
            Log.e(TAG, uiError.errorMessage);
            showMessage("falied");
        }

        @Override
        public void onCancel() {
            Log.e(TAG, "cancel");
            showMessage("cancel");
        }
    }


用戶信息

 private void getUserInfo() {
        UserInfo info = new UserInfo(LoginActivity.this, mTencent.getQQToken());
        info.getUserInfo(new IUiListener() {
            @Override
            public void onComplete(Object value) {
                JSONObject jsonObject = (JSONObject) value;
                Log.e(TAG, jsonObject.toString());
            }

            @Override
            public void onError(UiError uiError) {
                Log.e(TAG, uiError.errorMessage);
            }

            @Override
            public void onCancel() {

            }
        });
    }

調(diào)用QQ注銷接口

public void logout()
{
mTencent.logout(this);
}

特別注意

應(yīng)用調(diào)用Andriod_SDK接口時(shí),如果要成功接收到回調(diào)徐勃,需要在調(diào)用接口的Activity的onActivityResult方法中增加如下代碼:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Tencent.onActivityResultData(requestCode,resultCode,data,listener);
}

其中onActivityResultData接口中的listener為當(dāng)前調(diào)用的Activity所實(shí)現(xiàn)的相應(yīng)回調(diào)UIListener事示。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市僻肖,隨后出現(xiàn)的幾起案子肖爵,更是在濱河造成了極大的恐慌,老刑警劉巖臀脏,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件劝堪,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡揉稚,警方通過(guò)查閱死者的電腦和手機(jī)秒啦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人氮发,你說(shuō)我怎么就攤上這事≈肟牵” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵颁井,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)绣张,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任关带,我火速辦了婚禮侥涵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宋雏。我一直安慰自己芜飘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布磨总。 她就那樣靜靜地躺著嗦明,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蚪燕。 梳的紋絲不亂的頭發(fā)上娶牌,一...
    開(kāi)封第一講書(shū)人閱讀 52,184評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音馆纳,去河邊找鬼诗良。 笑死,一個(gè)胖子當(dāng)著我的面吹牛鲁驶,可吹牛的內(nèi)容都是我干的鉴裹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼钥弯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼壹罚!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起寿羞,我...
    開(kāi)封第一講書(shū)人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤猖凛,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后绪穆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體辨泳,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年玖院,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了菠红。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡难菌,死狀恐怖试溯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情郊酒,我是刑警寧澤遇绞,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布键袱,位于F島的核電站,受9級(jí)特大地震影響摹闽,放射性物質(zhì)發(fā)生泄漏蹄咖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一付鹿、第九天 我趴在偏房一處隱蔽的房頂上張望澜汤。 院中可真熱鬧,春花似錦舵匾、人聲如沸俊抵。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)务蝠。三九已至,卻和暖如春烛缔,著一層夾襖步出監(jiān)牢的瞬間馏段,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工践瓷, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留院喜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓晕翠,卻偏偏與公主長(zhǎng)得像喷舀,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子淋肾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,275評(píng)論 25 707
  • 點(diǎn)擊查看原文 Web SDK 開(kāi)發(fā)手冊(cè) SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 13,785評(píng)論 0 15
  • 1.什么是Activity?問(wèn)的不太多樊卓,說(shuō)點(diǎn)有深度的 四大組件之一,一般的,一個(gè)用戶交互界面對(duì)應(yīng)一個(gè)activit...
    JoonyLee閱讀 5,737評(píng)論 2 51
  • 傷痛是要是不是的戳一下的拿愧,才能知道自己活著,曾今那么痛碌尔,活著才能知道什么是幸福
    蚊子超可愛(ài)閱讀 185評(píng)論 0 0
  • 女兒今年8歲了浇辜,從小個(gè)子長(zhǎng)得都比同齡人高,皮膚白白凈凈唾戚,是一個(gè)活潑陽(yáng)光的女孩柳洋。誰(shuí)見(jiàn)了都說(shuō)這是個(gè)女姑娘。作為一個(gè)母親...
    帥為閱讀 138評(píng)論 0 1