android实现第三方登录

一、要点:介绍友盟,分析第三方登陆流程(以QQ为例)

        友盟是一个数据统计网站,提供给一些网站的统计代码来统计网站的访问情况等,国内是比较知名的统计网站和工具

        也可以帮助我们实现第三方登录等功能

二、友盟QQ登录集成

         1.进入友盟官网:https://www.umeng.com/

         2.下载SDK

         ①找到SDK下载

         ②如图下载SDK

3.下载完SDK后会出现一个压缩包将压缩包中的文件拷贝到对应的文件夹;

   右击 add as library

4.创建一个类继承Application,并添加如下代码:

UMConfigure.init(this,"你项目的AppKey","发布渠道如:小米",UMConfigure.DEVICE_TYPE_PHONE,"");
/**
 * 设置组件化的Log开关
 * 参数: boolean 默认为false,如需查看LOG设置为true
 */
UMConfigure.setLogEnabled(true);
PlatformConfig.setQQZone("100424468", "你项目的AppKey");

5.AndroidManifest.xml清单文件里面增加:

在application中添加你的继承Application类

<application

android:name="你继承Application的类名"


<!-- 必须的权限 -->
<uses-permission android:name="android.permission.INTERNET"/>

<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"/>
<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:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:configChanges="orientation|keyboardHidden|screenSize"/>

6.在实现第三方登录的activity中先动态申请权限

if(Build.VERSION.SDK_INT>=23){//QQ需要申请写入权限
    String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.CALL_PHONE,Manifest.permission.READ_LOGS,Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.SET_DEBUG_APP,Manifest.permission.SYSTEM_ALERT_WINDOW,Manifest.permission.GET_ACCOUNTS,Manifest.permission.WRITE_APN_SETTINGS};
    ActivityCompat.requestPermissions(this,mPermissionList,123);
}

7.然后重写onActivtyResult和onRequestPermissionsResult

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode==123){
        UMShareAPI.get(this).getPlatformInfo(this, SHARE_MEDIA.QQ, authListener);
    }
}

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

猜你喜欢

转载自blog.csdn.net/weixin_43566836/article/details/84889746