Android基於友盟的第三方登陸

1:申請,申請,申請
Android任何第三方的東西都要在其官網註冊id,創建應用並獲取key。這裏也就同樣了。不過申請都是比較簡單的,每個官網都有自己的申請方式以及文檔說明,這裏就不囉嗦了。
主要是講講這裏的第三方登陸需要注意的點:(這裏只介紹qq的第三方登陸,其它的基本類似)
在qq互聯官網註冊http://op.open.qq.com/的應用名稱和在友盟http://www.umeng.com/上註冊的應用名稱要相同

2:配置和使用
什麼都有了,那麼現在進行配置與使用。官方demo上有具體例子,但還是那種綜合性較大的,看起來的話就有點吃力,不過我還是啃了好一會,對照官方文檔http://dev.umeng.com/social/android/android-update?spm=0.0.0.0.8Wq2p1也算是基本搞定。
其實真的不復雜:
1:導入資源文件,清單文件配置
2:初始化

資源文件導入:
jar包的導入:
這裏寫圖片描述
下載官方的資源http://dev.umeng.com/social/android/sdk-download,找到適合自己的版本,選擇最新的就可以了。可以勾選下載自己想要的其它組件。
下載解壓後,找到上圖中的四個jar包,因爲是隻是介紹qq的第三方,所以就只導入了qq的jar包和友盟的基礎包,導入添加依賴。
同時將解壓目錄下main文件夾下的res文件夾拷貝至項目,可以直接複製到項目中的res(不會覆蓋,即只是添加沒有的東西至項目,原本的東西不會刪除)

然後,配置清單文件:
這裏直接拿上我參考官方配置好的xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="包名,系統自己會寫好" >
    <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.INTERNET" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.SET_DEBUG_APP" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        //這裏要寫好自己的App,官方解釋是加載第三方的登錄,如加載qq登錄,後面會有我的App代碼
        android:name=".App"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
//必須要,友盟的activity
        <activity
            android:name="com.umeng.socialize.editorpage.ShareActivity"
            android:theme="@style/Theme.UMDefault"
            android:excludeFromRecents="true"/>
            //友盟中申請的appkey
        <meta-data
            android:name="UMENG_APPKEY"
            android:value="友盟中申請的appkey" >
        </meta-data>
//qq官方申請的key的配置
        <activity
            android:name="com.tencent.tauth.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" />
                //注意,這裏的tencent不能省略
                <data android:scheme="tencent“你的key”" />
            </intent-filter>
        </activity>
       //要
        <activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
    </application>

</manifest>

清單文件就配置好了,
新建App 繼承Application:


/**
 * Created by Administrator on 2016/6/1.
 * 這裏完成對第三方登陸的初始化,記得要在清單文件中的主activity中配置
 */
public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // QQ和Qzone appid + appkey
        PlatformConfig.setQQZone("1105366393", "dAFotYfKXT27RGiY");

    }
}

使用:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button qq;
    private UMShareAPI mShareAPI = null;
    private SHARE_MEDIA platform = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mShareAPI = UMShareAPI.get( this );
        qq = (Button) findViewById(R.id.qq);
        qq.setOnClickListener(this);

    }


    @Override
    public void onClick(View v) {
        int id = v.getId();
        switch (id){
            case R.id.qq:
                platform = SHARE_MEDIA.QQ;
                break;
        }
        mShareAPI.doOauthVerify(MainActivity.this, platform, umAuthListener);
    }

    private UMAuthListener umAuthListener = new UMAuthListener() {
        @Override
        public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {
        //回調成功,即登陸成功後這裏返回Map<String, String> map,map裏面就是用戶的信息,可以拿出來使用了
            Toast.makeText(getApplicationContext(), "授權成功", Toast.LENGTH_SHORT).show();
            if (map!=null){
                Log.d("auth callbacl","getting data");
                Toast.makeText(getApplicationContext(), map.toString(), Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {
            Toast.makeText( getApplicationContext(), "授權失敗", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onCancel(SHARE_MEDIA share_media, int i) {
            Toast.makeText( getApplicationContext(), "授權取消", Toast.LENGTH_SHORT).show();
        }
    };
//記得要重寫這個方法
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        mShareAPI.onActivityResult(requestCode, resultCode, data);
    }
}
發佈了61 篇原創文章 · 獲贊 21 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章