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文档)