第三方 一键登录(移动sdk)

1.首先添加一键登录的jar包quick_login_android_1.5.jar *代表所需要的jar的版本这里从demo中取出即可。
2.配置assert文件需要将serverPublicKey.pem和clientCert.crt两个文件放入assert文件目录中(新的版本可能不在需要配置这俩文件了)
3.设置AndroidManifest.xml文件

 <!--权限的配置-->
 <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

   <!--一键登录开始................................................................................................................................................-->
        <activity
            android:name="com.cmic.sso.sdk.activity.OAuthActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:screenOrientation="unspecified"
            android:windowSoftInputMode="stateVisible"
            android:launchMode="singleTop">
        </activity>
        <!-- required -->
        <activity
            android:name="com.cmic.sso.sdk.activity.BufferActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:screenOrientation="unspecified"
            android:launchMode="singleTop">
        </activity>
        <!-- required -->
        <activity
            android:name="com.cmic.sso.sdk.activity.LoginAuthActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:screenOrientation="unspecified"
            android:launchMode="singleTop">
        </activity>
        <!--一键登录结束................................................................................................................................................-->

4.接下来是代码设置

1.创建AuthnHelper实例(这里可以写一个工具类或者在activity和fragment中业务逻辑处理模块添加处理)
     mAuthnHelper = AuthnHelper.getInstance(context.getApplicationContext());
     mAuthnHelper.setTimeOut(8000);
 2.创建监听处理
 mListener = new TokenListener() {
            @Override
            public void onGetTokenComplete(JSONObject jObj) {
                if (jObj != null) {
                    int resultCode = jObj.optInt("resultCode");
                    switch (resultCode) {
                        case 103000:
                            String mAccessToken = jObj.optString("token");
                            String openId = jObj.optString("openId");
                             //TODO 一键登录成功处理
                            break;
                        case 102121:
                            //TODO 用户取消操作处理
                            break;
                        case 200005: 
                           //TODO 错误提示  请打开获取手机号权限
                            break;
                        default:
                           //TOOD 错误提示  授权失败
                            break;
                    }
                }
            }
        };
3.调用处理登录
mAuthnHelper.getTokenExp(一键登录APPID, 一键登录APPKEY, AuthnHelper.AUTH_TYPE_DYNAMIC_SMS + AuthnHelper.AUTH_TYPE_SMS, mListener);

下面我们看看在activity或者fragment中的处理

首先要确定能不能使用一键登录(使用下面方法校验)
public static boolean checkIsSupportLogin(Context context) {
        boolean isSupport = false;
        try {
            if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
                return false;
            }
            TelephonyManager iPhoneManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            String str;
            str = iPhoneManager.getSimOperator();
            if (str.startsWith("46000") || str.startsWith("46002") || str.startsWith("46004") || str.startsWith("46007")) {
                str = "中国移动";
                isSupport = true;
            }else if (str.startsWith("46001") || str.startsWith("46006") || str.startsWith("46009")) {
                str = "中国联通";
                isSupport = false;
            } else if (str.startsWith("46003") || str.startsWith("46005") || str.startsWith("46011")) {
                str = "中国电信";
                isSupport = true;
            }

        } catch (Exception localException) {
            localException.printStackTrace();
        }
        return isSupport;
    }
如果校验成功则显示一键登录布局如果不成功则不显示一键登录布局
下面是一键登录点击事件处理
if (Build.VERSION.SDK_INT >= 23) {
			if (checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
				requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, PERMISSIONS_REQUEST_READ_PHONE_STATE_PRE);
			} else {
				oneKeyLogin();
			}
		} else {
			oneKeyLogin();
		}
在搞版本需要获取自动权限
下面是获取权限的处理
@Override
	public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
		super.onRequestPermissionsResult(requestCode, permissions, grantResults);
		switch (requestCode) {
			case PERMISSIONS_REQUEST_READ_PHONE_STATE_PRE:
				if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {
				   //todo 吐司提示请打开获取手机号权限
				}
				oneKeyLogin();
				break;
			default:
				break;
		}
	}

下面是调用oneKeyLogin的处理

在这里调用上面的
mAuthnHelper.getTokenExp(一键登录APPID, 一键登录APPKEY, AuthnHelper.AUTH_TYPE_DYNAMIC_SMS + AuthnHelper.AUTH_TYPE_SMS, mListener);
方法回调mListener中处理一键登录的结果

上面参数中添加的是AuthnHelper.AUTH_TYPE_DYNAMIC_SMS + AuthnHelper.AUTH_TYPE_SMS这两个参数意思是我们需要自定义一键登录的布局
这里大家可以在自己的布局中添加如下
umcsdk_login_authority.xml umcsdk_oauth.xml
我们可以需改里面的图标颜色等
第一个代表一键登录界面的xml
第二个代表手机号码验证xml
基本配置就这些
下面是github链接地址
一键登录资源github链接
(注:quick_login_Android-5.3.3-20180307.pdf相关文档放在了assert目录里面大家不明白的可以看看assert文档)

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值