接入说明 SDK支持版本:Android 5.0及以上
Android Studio支持版本:3.0以上
接入流程 1、 获取Android签名(APK签名密钥的MD5值)。
2、填写《一键登录开户申请表》 ,提交给商务进行运营商报备: 申请表下载 。
3、报备成功后,在平台上开通一键登录账号,获得appId和appSecret。
开发流程 1、导入SDK中libs目录下所有文件到项目的libs目录下,并在gradle中做以下配置:
1 2 3 4 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation fileTree(dir: 'lib', include: ['*.so']) implementation(name:'CMCCSSOSDK-release', ext: 'aar') implementation(name:'CTAccountSdk_HY_v3.7.0_all', ext: 'aar') implementation(name:'Ui-factory_oauth_mobile_3.8.3.1', ext: 'aar') implementation(name:'loginsdk1.0.4-release', ext: 'aar') implementation(name:'oneloginsdk-release', ext: 'aar') implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.0.2' implementation 'com.alibaba:fastjson:1.2.58' implementation 'com.squareup.okhttp3:okhttp:3.14.1' …… }
2、在gradle中使用申请时的签名秘钥来配置signingConfig签名信息,并在编译apk时,使用该签名。
3、在AndroidManifest.xml配置必要的权限支持,SDK也包含动态权限申请。
1 2 3 4 5 6 7 8 9 10 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.GET_TASKS" />
4、配置proguard-rules.pro混淆策略
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 -keep class com.cmic.sso.sdk.**{*;} -keep class cn.com.chinatelecom.account.**{*;} -dontwarncom.cmic.sso.sdk.** -keep class com.cmic.sso.sdk.**{*;} -dontwarncom.unicom.xiaowo.login.** -keep class com.unicom.xiaowo.login.**{*;} -dontwarncom.sdk.** -keep class com.sdk.** { *;} -dontwarncom.cmcc.allnetlogin.** -keep class com.cmcc.allnetlogin.client.**{*;} -keep class com.cmcc.allnetlogin.model.**{*;} -keep class com.cmcc.allnetlogin.http.**{*;} -keep class com.cmcc.allnetlogin.utils.**{*;} -keep class org.apache.commons.codec1.**{*;} -keep class cn.emay.ql.UniSDK{*;} -keep class cn.emay.ql.LoginCallback{*;} -keep class cn.emay.ql.UniLoginActivity{*;} -keep class cn.emay.ql.utils.**{*;} -keep class com.lyxxjs.onelogin.sdk.OneLoginSDK{*;} -keep class com.lyxxjs.onelogin.sdk.OneLoginCallBack{*;} -keep class com.mob.**{*;}
5、添加Activity和Style声明:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 <activity android:name ="com.cmic.sso.sdk.activity.LoginAuthActivity" android:configChanges ="orientation|keyboardHidden|screenSize" android:launchMode ="singleTop" android:screenOrientation ="unspecified" android:theme ="@style/Theme.ActivityDialogStyle" > </activity > <activity android:name ="com.sdk.mobile.manager.login.cucc.OauthActivity" android:screenOrientation ="portrait" tools:replace ="android:theme" android:theme ="@style/Theme.ActivityDialogStyle" /> <activity android:name ="cn.com.chinatelecom.account.sdk.ui.AuthActivity" android:exported ="false" android:theme ="@style/ct_account_act_theme" android:screenOrientation ="portrait" /> <activity android:name ="cn.com.chinatelecom.account.sdk.ui.PrivacyWebviewActivity" android:exported ="false" android:theme ="@style/ct_account_act_theme" android:screenOrientation ="portrait" />
1 2 3 4 5 <style name ="ct_account_act_theme" parent ="Theme.AppCompat.Light.NoActionBar" > <item name ="android:windowBackground" > @color/colorTans</item > <item name ="android:windowIsTranslucent" > false</item > <item name ="android:windowNoTitle" > true</item > </style >
6、复制联通和电信layout
1 2 activity_oauth.xml //联通登录页面 ct_account_auth_activity_dynamic.xml //电信普通登录页面
将以上两个文件复制到res\layout目录下。
注:不可删除组件,不可修改组件ID。仅可修改文字、颜色、LOGO、边距等属性。
7、将一下代码加入使用一键登录的Activity中,即申请表中的登录类:
预准备
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public void onCreate (Bundle savedInstanceState) { …… OneLoginSDK.demoServer=true ; OneLoginSDK.apiVersion="v1" ; OneLoginSDK.setConfig("{...}" ) OneLoginSDK.prepare(this , appId,appSecret, new OneLoginCallBack() { @Override public void success (String s) { } @Override public void error (String s) { } }); }
选择一键登录后
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 OneLoginSDK.start(this , new OneLoginCallBack() { @Override public void success (String s) { try { JSONObject obj=new JSONObject(s); String mobile=obj.getString("mobile" ); String token =obj.getString("token " ); …… } catch (JSONException e) { } } @Override public void error (String s) { } });
8、UI定制: (1)接口设定 调用OneLoginSDK.setConfig(“{…}”);将json格式的设定值传入:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 { "ui" : { "nav" : { "color" : "#ffffff" , "content" : "一键登录" , "fontSize" : 17 , "lineColor" : "#cccccc" , "navHidden" : false , "returnImgPath" : "arrow_back" , "backgroundColor" : "#0086d0" }, "logo" : { "top" : 30 , "width" : 70 , "height" : 70 , "logoHidden" : false , "backgroundImage" : "ic_launcher" }, "login" : { "top" : "100" , "color" : "#ffffff" , "content" : "本机号码一键登录" , "fontSize" : 15 , "backgroundImage" : "selector_button_cucc" }, "mobile" : { "top" : 30 , "color" : "#333333" , "fontSize" : 18 }, "slogan" : { "top" : 30 , "color" : "#999999" , "fontSize" : 10 }, "privacy" : { "href" : "https:\/\/www.baidu.com" , "color" : "#0085d0" , "label" : "自定义协议" , "bottom" : 30 , "margin" : 50 , "fontSize" : 10 } } }
(2)WEB管理台中进行一键登录设定 详情查询自定义UI
9、通过token验证手机 详情查询服务接口
错误码
状态码
含义
ERROR_APPID
AppId不存在
ERROR_PARAMS
请求参数错误
ERROR_PLATFORM
手机平台错误
ERROR_ENCRYPTION
解密失败
ERROR_DATA
数据格式错误
ERROR_CODE
平台验证错误