使用

来源:互联网 发布:淘宝评语怎么改好评 编辑:程序博客网 时间:2024/04/29 08:31

在开发过程中,必不可少的要进行第三方登录,这里只是做一个简单的用QQ实现第三方登录,  在做第三方登录的时候我们需要用到友盟,在友盟官网的产品栏目中有一个U_Share..点击它会出现 "立即使用" 和"SDK及文档"两个按钮, 如果是第一次使用需要下载SDK文档,此时需要点击"SDK及文档"这个按钮,选中安卓进行下载.

下载完之后根据"SDK及文档"里的"UShare集成文档"里的步骤进行集成,:

集成需要导入四个lib包和一个debug_keystore文件.


如下是集成之后项目下的的build.gradle:

apply plugin: 'com.android.application'android {    compileSdkVersion 25    buildToolsVersion "26.0.0"    defaultConfig {        applicationId "com.example.guan.project1_day2_qqlogin"        minSdkVersion 15        targetSdkVersion 25        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }    buildTypes {        release {            minifyEnabled false            signingConfig signingConfigs.debug            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }        debug {            minifyEnabled false            signingConfig signingConfigs.debug            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }    signingConfigs {        debug {            storeFile file('debug.keystore')            storePassword "android"            keyAlias "androiddebugkey"            keyPassword "android"        }    }}dependencies {    compile fileTree(include: ['*.jar'], dir: 'libs')    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {        exclude group: 'com.android.support', module: 'support-annotations'    })    compile 'com.android.support:appcompat-v7:25.3.1'    testCompile 'junit:junit:4.12'    compile files('libs/open_sdk_r5788_lite.jar')    compile 'com.github.bumptech.glide:glide:4.0.0-RC1'}
apply plugin: 'com.android.application'
android {
    compileSdkVersion 25    buildToolsVersion "26.0.0"    defaultConfig {        applicationId "com.example.guan.project1_day2_qqlogin"        minSdkVersion 15        targetSdkVersion 25        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }    buildTypes {        release {            minifyEnabled false            signingConfig signingConfigs.debug            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }        debug {            minifyEnabled false            signingConfig signingConfigs.debug            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }    signingConfigs {        debug {            storeFile file('debug.keystore')            storePassword "android"            keyAlias "androiddebugkey"            keyPassword "android"        }    }}dependencies {    compile fileTree(include: ['*.jar'], dir: 'libs')    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {        exclude group: 'com.android.support', module: 'support-annotations'    })    compile 'com.android.support:appcompat-v7:25.3.1'    testCompile 'junit:junit:4.12'    compile files('libs/open_sdk_r5788_lite.jar')    compile 'com.github.bumptech.glide:glide:4.0.0-RC1'}

集成之后app下的build.gradle文件:

apply plugin: 'com.android.application'android {    compileSdkVersion 25    buildToolsVersion "26.0.0"    defaultConfig {        applicationId "com.example.guan.project1_day2_qqlogin"        minSdkVersion 15        targetSdkVersion 25        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }    buildTypes {        release {            minifyEnabled false            signingConfig signingConfigs.debug            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }        debug {            minifyEnabled false            signingConfig signingConfigs.debug            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }    signingConfigs {        debug {            storeFile file('debug.keystore')            storePassword "android"            keyAlias "androiddebugkey"            keyPassword "android"        }    }}dependencies {    compile fileTree(include: ['*.jar'], dir: 'libs')    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {        exclude group: 'com.android.support', module: 'support-annotations'    })    compile 'com.android.support:appcompat-v7:25.3.1'    testCompile 'junit:junit:4.12'    compile files('libs/open_sdk_r5788_lite.jar')    compile 'com.github.bumptech.glide:glide:4.0.0-RC1'}


集成之后的清单列表:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.guan.project1_day2_qqlogin">    <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" />    <application        android:name=".App"        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme">        <activity android:name=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <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" />                <data android:scheme="tencent100424468" />            </intent-filter>        </activity>        <activity            android:name="com.tencent.connect.common.AssistActivity"            android:screenOrientation="portrait"            android:theme="@android:style/Theme.Translucent.NoTitleBar"            android:configChanges="orientation|keyboardHidden|screenSize"/>        <meta-data            android:name="UMENG_APPKEY"            android:value="561cae6ae0f55abd990035bf" >        </meta-data>    </application></manifest>

集成之后的app:

apply plugin: 'com.android.application'android {    compileSdkVersion 25    buildToolsVersion "26.0.0"    defaultConfig {        applicationId "com.example.guan.project1_day2_qqlogin"        minSdkVersion 15        targetSdkVersion 25        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }    buildTypes {        release {            minifyEnabled false            signingConfig signingConfigs.debug            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }        debug {            minifyEnabled false            signingConfig signingConfigs.debug            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }    signingConfigs {        debug {            storeFile file('debug.keystore')            storePassword "android"            keyAlias "androiddebugkey"            keyPassword "android"        }    }}dependencies {    compile fileTree(include: ['*.jar'], dir: 'libs')    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {        exclude group: 'com.android.support', module: 'support-annotations'    })    compile 'com.android.support:appcompat-v7:25.3.1'    testCompile 'junit:junit:4.12'    compile files('libs/open_sdk_r5788_lite.jar')    compile 'com.github.bumptech.glide:glide:4.0.0-RC1'}

集成需要导入的四个lib包,和添加一个debug_keystore文件



然后在"SDK及文档"里的"第三方登录集成"步骤,在代码里实现.

public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private Button mQQlogin;    private ImageView mQQimage;    private UMShareAPI umShareAPI;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();    }    private void initView() {        mQQlogin = (Button) findViewById(R.id.QQlogin);        mQQimage= (ImageView) findViewById(R.id.QQimage);        mQQlogin.setOnClickListener(this);        App app = (App) getApplication();        umShareAPI = app.getmUMShareAPI();    }    @Override    public void onClick(View v) {        //获取用户信息        if (umShareAPI.isInstall(this, SHARE_MEDIA.QQ)) {            umShareAPI.getPlatformInfo(this, SHARE_MEDIA.QQ, new UMAuthListener() {                @Override                public void onStart(SHARE_MEDIA share_media) {                }                @Override                public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {                    if (share_media == SHARE_MEDIA.QQ){                        if (i==0){                            Log.e("onComplete","onComplete :登录成功");                        }else  if (i==2){                            Log.e("onComplete","onComplete :获取用户信息录成功");                            String name=map.get("name");                            String imageurl=map.get("iconurl");                            mQQlogin.setText(name);                            Glide.with(MainActivity.this).load(imageurl).into(mQQimage);                        }                    }                }                @Override                public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {                }                @Override                public void onCancel(SHARE_MEDIA share_media, int i) {                }            });        } else {            Toast.makeText(MainActivity.this, "没有安装QQ", Toast.LENGTH_SHORT).show();        }    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        umShareAPI.onActivityResult(requestCode, resultCode, data);    }}

一些代码进行了优化,其中第三方登录授权以后会得到QQ昵称和头像显示在界面,布局如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"   android:orientation="vertical"    tools:context="com.example.guan.project1_day2_qqlogin.MainActivity">    <Button        android:id="@+id/QQlogin"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="QQ登录" />    <ImageView        android:id="@+id/QQimage"        android:layout_width="200dp"        android:layout_height="200dp"        android:layout_gravity="center_horizontal"       /></LinearLayout>

原创粉丝点击