Android使用友盟集成QQ澜躺、微信、微博等第三方登錄

轉(zhuǎn)載請注明出處:http://www.reibang.com/p/80d6f399f75b

前言

最近項(xiàng)目需要加入第三方分享和登錄功能淋纲,之前其他項(xiàng)目的第三方分享和登錄一直都使用ShareSDK實(shí)現(xiàn)的劳闹。為了統(tǒng)一使用友盟的全家桶,所以三方分享和登錄也就選擇了友盟洽瞬。這里記錄一下完整的集成與使用流程本涕。

1、申請友盟Appkey

直接到友盟官網(wǎng)申請即可伙窃。一般都不用自己去申請菩颖,跟項(xiàng)目經(jīng)理要即可。
(我這里的Demo為了方便就直接用友盟Demo里面提供的Appkey为障,但是創(chuàng)建的項(xiàng)目包名也要和友盟一樣晦闰。真實(shí)項(xiàng)目要自己另外申請)

2、下載SDK

下載地址:http://dev.umeng.com/social/android/sdk-download

下載的時(shí)候根據(jù)自己需求進(jìn)行選擇产场,我這里選擇選擇的是精簡版(包含常用的分享與登錄功能)鹅髓,只測試微信,QQ京景,新浪微博窿冯。


下載后解壓出來是這樣的:


3、準(zhǔn)備資源

使用友盟的集成工具快速集成友盟的分享SDK:雙擊 友盟集成工具.jar-->選擇使用的平臺(tái)和IDE确徙,如圖:


點(diǎn)擊OK鍵醒串,會(huì)在當(dāng)前目錄生成名為umeng_integratetool_result的文件夾执桌,如圖:


4、開始集成

1芜赌、將上面的文件夾依次粘貼到工程相應(yīng)的文件夾即可仰挣,如圖:

2、將debug.keystore文件拷貝到項(xiàng)目的app目錄下(對(duì)應(yīng)app build中相應(yīng)的位置)缠沈,目的是為了使用友盟的簽名膘壶,如圖:

3、添加回調(diào)Activity

1洲愤,微信回調(diào):
其實(shí)在第一步拷貝的時(shí)候已經(jīng)添加了颓芭。即在包名目錄下創(chuàng)建wxapi文件夾,新建一個(gè)名為WXEntryActivity的activity繼承WXCallbackActivity

2柬赐,QQ與新浪微博的回調(diào):
QQ與新浪不需要添加Activity亡问,但需要在使用QQ分享或者授權(quán)的Activity中添加如下代碼:
(注意onActivityResult不可在fragment中實(shí)現(xiàn),如果在fragment中調(diào)用登錄或分享肛宋,需要在fragment依賴的Activity中實(shí)現(xiàn))

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}

4州藕、配置清單文件Android Manifest

1,添加權(quán)限:

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

2酝陈,添加sdk中需要的Activity

<!--微信-->
        <activity
            android:name=".wxapi.WXEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
        <!--新浪微博-->
        <activity
            android:name=".WBShareActivity"
            android:configChanges="keyboardHidden|orientation"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <!--qq精簡版-->
        <activity
            android:name="com.umeng.qq.tencent.AuthActivity"
            android:launchMode="singleTask"
            android:noHistory="true">
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>

                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <!--這里的scheme是qq分享要用的床玻,100424468為自己申請的appid,真實(shí)項(xiàng)目中需要替換-->
                <data android:scheme="tencent100424468"/>
            </intent-filter>
        </activity>
        <activity
            android:name="com.umeng.qq.tencent.AssistActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
        <!--分享編輯頁-->
        <activity
            android:name="com.umeng.socialize.editorpage.ShareActivity"
            android:excludeFromRecents="true"
            android:theme="@style/Theme.UMDefault"
            />

3沉帮,添加友盟appkey

        <meta-data
            android:name="UMENG_APPKEY"
            android:value="561cae6ae0f55abd990035bf">
        </meta-data>

5笨枯、配置三方appkey

新建MyApplication繼承Application(注意:需要在清單文件中配置該MyApplication),在MyApplication文件中配置三方平臺(tái)的appkey和初始化sdk遇西。如下:

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        UMShareAPI.get(this);//初始化sdk
        //開啟debug模式,方便定位錯(cuò)誤严嗜,具體錯(cuò)誤檢查方式可以查看http://dev.umeng.com/social/android/quick-integration的報(bào)錯(cuò)必看粱檀,正式發(fā)布,請關(guān)閉該模式
        Config.DEBUG = true;
    }


    //各個(gè)平臺(tái)的配置
    {
        //微信
        PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0");
        //新浪微博(第三個(gè)參數(shù)為回調(diào)地址)
        PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad","http://sns.whalecloud.com/sina2/callback");
        //QQ
        PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
    }
}

6漫玄、登錄代碼MainActivity.java:

public class MainActivity extends AppCompatActivity {

    private String TAG = this.getClass().getSimpleName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void qqLogin(View view) {
        authorization(SHARE_MEDIA.QQ);
    }

    public void weiXinLogin(View view) {
        authorization(SHARE_MEDIA.WEIXIN);
    }

    public void sinaLogin(View view) {
        authorization(SHARE_MEDIA.SINA);
    }

    //授權(quán)
    private void authorization(SHARE_MEDIA share_media) {
        UMShareAPI.get(this).getPlatformInfo(this, share_media, new UMAuthListener() {
            @Override
            public void onStart(SHARE_MEDIA share_media) {
                Log.d(TAG, "onStart " + "授權(quán)開始");
            }

            @Override
            public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {
                Log.d(TAG, "onComplete " + "授權(quán)完成");

                //sdk是6.4.4的,但是獲取值的時(shí)候用的是6.2以前的(access_token)才能獲取到值,未知原因
                String uid = map.get("uid");
                String openid = map.get("openid");//微博沒有
                String unionid = map.get("unionid");//微博沒有
                String access_token = map.get("access_token");
                String refresh_token = map.get("refresh_token");//微信,qq,微博都沒有獲取到
                String expires_in = map.get("expires_in");
                String name = map.get("name");
                String gender = map.get("gender");
                String iconurl = map.get("iconurl");

                Toast.makeText(getApplicationContext(), "name=" + name + ",gender=" + gender, Toast.LENGTH_SHORT).show();

                //拿到信息去請求登錄接口茄蚯。。睦优。
            }

            @Override
            public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {
                Log.d(TAG, "onError " + "授權(quán)失敗");
            }

            @Override
            public void onCancel(SHARE_MEDIA share_media, int i) {
                Log.d(TAG, "onCancel " + "授權(quán)取消");
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
    }
}

效果如下:

Demo下載地址:https://github.com/wildma/UMengThirdPartyShareLogin

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末渗常,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子汗盘,更是在濱河造成了極大的恐慌皱碘,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件隐孽,死亡現(xiàn)場離奇詭異癌椿,居然都是意外死亡健蕊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門踢俄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缩功,“玉大人,你說我怎么就攤上這事都办〉招浚” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵琳钉,是天一觀的道長势木。 經(jīng)常有香客問我,道長槽卫,這世上最難降的妖魔是什么跟压? 我笑而不...
    開封第一講書人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮歼培,結(jié)果婚禮上震蒋,老公的妹妹穿的比我還像新娘。我一直安慰自己躲庄,他們只是感情好查剖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著噪窘,像睡著了一般笋庄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上倔监,一...
    開封第一講書人閱讀 51,208評(píng)論 1 299
  • 那天直砂,我揣著相機(jī)與錄音,去河邊找鬼浩习。 笑死静暂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谱秽。 我是一名探鬼主播洽蛀,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼疟赊!你這毒婦竟也來了郊供?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤近哟,失蹤者是張志新(化名)和其女友劉穎驮审,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡头岔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年塔拳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片峡竣。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡靠抑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出适掰,到底是詐尸還是另有隱情颂碧,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布类浪,位于F島的核電站载城,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏费就。R本人自食惡果不足惜诉瓦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望力细。 院中可真熱鬧睬澡,春花似錦、人聲如沸眠蚂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逝慧。三九已至昔脯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間笛臣,已是汗流浹背云稚。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沈堡,地道東北人碱鳞。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像踱蛀,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子贵白,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

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