接入说明:
SDK支持版本:minSdkVersion 16
亿美免密SDK提供手机账号一键登录能力。
v7a版本更新内容:
全面更新了三大运营商的SDK,整理了提供给客户端接口,使用更直观,更便捷。
通过亿美申请appid和appSecret。
1. Android Studio版本需要使用3.0以上
2.本SDK提供两种接入方式:
1>.远程依赖,此方法不再需要拷贝aar到libs目录下。
allprojects { repositories { maven { url 'https://jitpack.io' } } }
在 module 的 gradle 中添加依赖:
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.9' implementation 'com.github.Antidy:OneLoginSDK:1.4.0'
注:如遇到okio冲突,请在module中加入如下代码:
configurations { compile.exclude module: 'okhttp' compile.exclude module: 'okio' }
2>.本地集成方式:拷贝loginsdk-release-1.4.0.aar到项目 的libs目录下,并在gradle中做以下配置
implementation fileTree(include: ['*.jar'], dir: 'libs') 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.9' implementation(name:'loginsdk-release-1.4.0', ext: 'aar')
3. 在gradle中配置signingConfig签名信息,并在编译apk时,使用该签名。
4. 提交app包名和app签名 将app包名和签名提供给平台审核。 平台需要校验app包名和签名,请务必提供准确信息。信息更改后,需要重新向平台申请。 可使用命令:keytool -v -list -keystore 你的应用签名文件.jks获取签名的MD5信息。
5. 在AndroidManifest.xml配置必要的权限支持,并在代码中做动态权限申请。
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_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.READ_PHONE_STATE" /> <!-- 低版本系统 requestNetwork 接口需要该权限,参考ConnectivityManager requestNetwork 方法 --> <uses-permission android:name="android.permission.WRITE_SETTINGS" />
权限说明:
权限名称 | 权限说明 | 使用说明 |
---|---|---|
INTERNET | 允许应用程序联网 | 用于访问极验、运营商网关和认证服务器 |
ACCESS_WIFI_STATE | 允许访问 WiFi 网络状态信息 | 允许 SDK 获取 WiFi 网络状态与连接信息 |
ACCESS_NETWORK_STAT | 允许访问网络状态 | 允许 SDK 判断当前网络处于移动网络或WiFi网络 |
CHANGE_NETWORK_STATE | 允许改变网络连接状态 | 设备在WiFi跟数据双开时,允许 SDK 内部请求(仅用于网关取号的请求)强行走数据网络通道 |
CHANGE_WIFI_STATE | 允许改变 WiFi 网络连接状态 | 设备在 WiFi 跟数据双开时,切允许 SDK 内部请求 |
READ_PHONE_STATE | 允许读取手机状态 | SDK 取号阶段判断换卡、移动 SDK 判断双卡和换卡(低概率使用场景,非必须权限) |
WRITE_SETTINGS | 允许读写系统设置项 | 低版本系统进行数据切换用到的权限,添加后可增加 WiFi+4G下网络环境下的取号成功率,高版本系统以上可去除该权限 |
6.Android 9.0 以上设备配置对 http 协议的支持:
<application android:usesCleartextTraffic="true"> //... </application> //请务必配到application节点上
7. 配置混淆策略
-dontwarn com.geetest.onelogin.** -keep class com.geetest.onelogin.** { *; } -dontwarn com.geetest.onepassv2.** -keep class com.geetest.onepassv2.** { *; } -dontwarn com.geetest.deepknow.** -keep class com.geetest.deepknow.** { *; } -dontwarn com.geetest.mobinfo.** -keep class com.geetest.mobinfo.** { *; } -dontwarn com.cmic.sso.sdk.** -keep class com.cmic.sso.sdk.** { *; } -dontwarn com.unigeetest.** -keep class com.unigeetest.** { *; } -dontwarn cn.com.chinatelecom.account.** -keep class cn.com.chinatelecom.account.** { *; } #emay -keep class cn.emay.ql.**{*;}
1、调用UniSDK.getInstance().initAuth初始化,并获取初始化回调结果。
方法原型:
UniSDK.getInstance().initAuth(Context context, String appId, String appSecret,new InitCallback() { @Override public void onSuccess(String msg) { //初始化成功 } @Override public void onFailed(String msg) { //初始化失败 } });
参数说明:
context,当前页面上下文
appId,通过亿美拿到的appId
appSecret:通过亿美拿到的appSecret
InitCallback:初始化回调
2、在初始化成功完成之后,调用UniSDK.getInstance().login 接口完成登录
方法原型:
public void login(OneLoginThemeConfig themeConfig,LoginCallback callback) { }
参数说明:
context,当前页面上下文
callback :登录回调,需要开发者自己在回调中做出相应处理
themeConfig:授权页的自定义UI参数对象
onSuccess(String msg) msg参数说明:登录成功后返回获取的token。 onFailed(String msg) msg参数说明:登录失败返回的错误原因。
3、关闭授权页
用户主动关闭授权页。SDK 除了返回按钮触发关闭以外,默认是不 finsih 授权页的,需要开发者在回调 结束后自行关闭授权页。
代码示例:
OneLoginHelper.with().dismissAuthActivity();
v7a版本将所有的UI自定义部分都以代码接口的形式提供给了接入者,通过实例化 OneLoginThemeConfig 并进行自定义配置,完成授权页面 UI 的个性化设计,每次调用拉起授权页方法前必须先传入该实例,否则授权界面会展示异常。
OneLoginThemeConfig oneLoginThemeConfig = new OneLoginThemeConfig.Builder().build();
setDialogTheme(boolean isDialogTheme, int dialogWidth, int dialogHeight, int dialogX, int dialogY, boolean isDialogBottom, boolean isWebViewDialogTheme)
参数 | 参数类型 | 说明 | 默认值 |
---|---|---|---|
isDialogTheme | boolean | 是否使用弹窗模式,true 为使用,false 为不使用 | false |
dialogWidth | int | 弹窗模式宽度,长宽的单位都为dp,以下单位与之保持一致 | 300 |
dialogHeight | int | 弹窗模式高度 | 500 |
dialogX | int | 授权⻚弹窗X偏移量(以屏幕⼼为原点) | 0 |
dialogY | int | 授权⻚弹窗Y偏移量(以屏幕⼼为原点) | 0 |
isDialogBottom | boolean | 授权⻚弹窗是否贴于屏幕底部 true:显示到屏幕底部,dialogY 参数设置将⽆效 false:不显示到屏幕底部,以 dialogY 参数为准 | false |
isWebViewDialogTheme | boolean | 隐私页面是否使用弹窗模式 | false |
在login方法之前实现。
OneLoginHelper.with().addOneLoginRegisterViewConfig(id, authRegisterViewConfig);
参数 | 类型 | 说明 |
---|---|---|
id | String | 开发者自定义控件名称 |
authRegisterViewConfig | AuthRegisterViewConfig | 配置开发者自定义控件的控件来源,位置和处理逻辑等,详细参考demo |
创建自定义控件配置
AuthRegisterViewConfig authRegisterViewConfig = new AuthRegisterViewConfig.Builder().build();
方法名 | 传参类型 | 说明 |
---|---|---|
setView | View | 开发者传入自定义的控件,需要设置好控件的布局属性,SDK 只支持RelativeLayout布局,控件位置请通过RelativeLayout.LayoutParams 配置指定,具体配置可参考 demo 示例代码 |
setRootViewId | int | 设置控件的位置。 |
RootViewId.ROOT_VIEW_ID_TITLE_BAR | 指标题栏 | |
RootViewId.ROOT_VIEW_ID_BODY | 指授权页空白处 |
建议直接在 AndroidManifest 中配置登录页前一个 Activity 的方向,或者调用系统api`setRequestedOrientation`设置屏幕方向来替换此方法。
public void setRequestedOrientation(Activity activity, boolean isPortrait)
setRequestedOrientation(MainActivity.this, true);
参数 | 类型 | 说明 |
---|---|---|
activity | Activity | 当前调用 OneLogin 的页面 |
isPortrait | boolean | 是否是竖屏 |
设置背景图片。
setAuthBGImgPath(String authBGImgPath)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
authBGImgPath | String | 设置背景图片。放在 `drawable` 文件下,以下背景图片路径与之保持一致 | gt_one_login_bg |
设置页面视频背景。
setAuthBgVideoUri(String authBgVideoUri)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
authBgVideoUri | String | 视频背景 Uri 字符串。放在 `raw` 文件下,如: `"android.resource://" + this.getPackageName() + "/" + R.raw.geetest_demo_video` | null |
设置状态栏颜色、字体颜色。
setStatusBar(int statusBarColor, int navigationBarColor, boolean isLightColor)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
statusBarColor | int | 自定义状态栏背景颜色,优先按资源id查找,找不到则按固定颜色值设置 | 0 |
navigationBarColor | int | 自定义底部导航栏背景颜色,优先按资源id查找,找不到则按固定颜色值设置 | 0 |
isLightColor | boolean | 设置状态栏内容的颜色(只能黑白),true 为黑色,false 为白色 | false |
设置标题栏布局
setAuthNavLayout(int navColor, int authNavHeight, boolean authNavTransparent, boolean authNavGone)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
navColor | int | 标题栏颜色,优先按资源id查找,找不到则按固定颜色值设置 | 默认0xFF3973FF,黑暗模式0x2E2E30 |
authNavHeight | int | 标题栏高度 | 49 |
authNavTransparent | boolean | 标题栏是否透明 | true |
authNavGone | boolean | 标题栏是否隐藏,此处的隐藏为 `View.GONE` | false |
设置标题栏中间文字相关
setAuthNavTextView(String navText, int navTextColor, int navTextSize, boolean navWebTextNormal,String navWebViewText, int navWebViewTextColor, int navWebViewTextSize)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
navText | String | 文字设置 | 一键登录 |
navTextColor | int | 字体颜色,优先按资源id查找,找不到则按固定颜色值设置 | 默认0xFF000000,黑暗模式0xFFFFFFFF |
navTextSize | int | 字体大小,单位为`sp`,以下设置字体大小的单位与之保持一致 | 17 |
navWebTextNormal | boolean | 设置是否隐私条款页面的标题栏中间文字使用默认值,true 为使用navWebViewText,false为使用默认隐私条款的名字 | false |
navWebViewText | String | 隐私条款页面的标题栏中间文字 | 服务条款 |
navWebViewTextColor | int | 隐私条款页面的标题栏中间文字颜色 | 默认0xFF000000,黑暗模式0xFFFFFFFF |
navWebViewTextSize | int | 隐私条款页面的标题栏中间文字大小 | 17 |
设置标题栏中间文字的字体相关
setAuthNavTextViewTypeface(Typeface navTextTypeface, Typeface navWebViewTextTypeface)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
navTextTypeface | Typeface | 标题栏的文字的字体 | Typeface.DEFAULT |
navWebViewTextTypeface | Typeface | 条款页面标题栏的文字的字体 | Typeface.DEFAULT |
设置标题栏返回按钮相关
setAuthNavReturnImgView(String returnImgPath, int returnImgWidth, int returnImgHeight, boolean returnImgHidden, int returnImgOffsetX) setAuthNavReturnImgView(String returnImgPath, int returnImgWidth, int returnImgHeight, boolean returnImgHidden, int returnImgOffsetX, int returnImgOffsetY)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
returnImgPath | String | 返回按钮图片 | gt_one_login_ic_chevron_left_black |
returnImgWidth | int | 返回按钮图片宽度 | 24 |
returnImgHeight | int | 返回按钮图片高度 | 24 |
returnImgHidden | boolean | 返回按钮是否隐藏 | false |
returnImgOffsetX | int | 返回按钮图片距离屏幕左边X轴偏移量 | 12 |
returnImgOffsetY | int | 返回按钮图片距离标题栏顶部偏移量,可选配,不传该参数默认标题栏垂直居中 | 0 |
设置是否屏蔽返回键与返回按钮返回事件,屏蔽后仍然会发生对应的错误码回调,只是 SDK 默认不关闭授权页。
setBlockReturnEvent(boolean blockReturnKey, boolean blockReturnBtn)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
blockReturnKey | boolean | 是否屏蔽返回键返回事件 | false |
blockReturnBtn | boolean | 是否屏蔽返回按钮返回事件 | false |
设置logo相关
setLogoImgView(String logoImgPath, int logoWidth, int logoHeight, boolean logoHidden, int logoOffsetY, int logoOffsetY_B, int logoOffsetX)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
logoImgPath | String | logo 图片 | gt_one_login_logo |
logoWidth | int | logo 图片宽度 | 71 |
logoHeight | int | logo 图片高度 | 71 |
logoHidden | boolean | logo 是否隐藏 | false |
logoOffsetY | int | logo 相对于状态栏下边缘 y 偏移 | 125 |
logoOffsetY_B | int | logo 相对于底部 y 偏移 | 0 |
logoOffsetX | int | logo 相对于屏幕左边 x 轴偏移量,当为0时表示居中显示 | 0 |
设置号码相关
setNumberView(int numberColor, int numberSize, int numberOffsetY, int numberOffsetY_B, int numberOffsetX)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
numberColor | int | 号码栏字体颜色,优先按资源id查找,找不到则按固定颜色值设置 | 默认0xFF3D424C,黑暗模式0xFFFFFFFF |
numberSize | int | 号码栏字体大小 | 24 |
numberOffsetY | int | 号码栏相对于标题栏下边缘 y 偏移 | 200 |
numberOffsetY_B | int | 号码栏相对于底部 y偏移 | 0 |
numberOffsetX | int | 号码栏相对于屏幕左边 x 轴偏移量,当为 0 时表示居中显示 | 0 |
设置号码栏富文本样式,配置后将使用该富文本填充脱敏手机号内容
setNumberText(CharSequence numberText)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
numberText | CharSequence | 号码栏的富文本内容, 参考`TextView`的`setText(CharSequence text)`方法 | null |
注:富文本内容应该包含正确的脱敏手机号,且配置之前必须确保能拿到正确的脱敏手机号
设置号码栏字体相关
setNumberViewTypeface(Typeface numberTypeface)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
numberTypeface | Typeface | 号码栏的文字的字体 | Typeface.DEFAULT |
设置切换账号相关
setSwitchView(String switchText, int switchColor, int switchSize, boolean switchHidden, int switchOffsetY, int switchOffsetY_B, int switchOffsetX)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
switchText | String | 切换账号文字 | 切换账号,默认情况下受背景大小限制,只能显示4个字,如遇显示不全,建议通过`setSwitchViewLayout`调整背景大小试试 |
switchColor | String | 切换账号字体颜色,优先按资源id查找,找不到则按固定颜色值设置 | 默认0xFF3973FF,黑暗模式0xFF6794FF |
switchSize | int | 切换账号字体大小 | 14 |
switchHidden | boolean | false | 14 |
switchOffsetY | int | 切换账号相对于标题栏下边缘 y 偏移 | 249 |
switchOffsetY_B | int | 切换账号相对于底部 y 偏移 | 0 |
switchOffsetX | int | 切换账号相对于屏幕左边 x 轴偏移量,当为0时表示居中显示 | 0 |
设置切换账号背景图片与宽高相关
setSwitchViewLayout(String switchImgPath, int switchWidth, int switchHeight)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
switchImgPath | String | 切换账号背景图片 | 默认无背景 |
switchWidth | int | 切换账号背景宽度 | 80 |
switchHeight | int | 切换账号背景高度 | 25 |
设置切换账号字体相关
setSwitchViewTypeface(Typeface switchTypeface)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
switchTypeface | Typeface | 切换账号的文字的字体 | Typeface.DEFAULT |
设置登录按钮布局
setLogBtnLayout(String logBtnImgPath, int logBtnWidth, int logBtnHeight, int logBtnOffsetY, int logBtnOffsetY_B, int logBtnOffsetX) setLogBtnLayout(String logBtnImgPath, String logBtnUncheckedImgPath, int logBtnWidth, int logBtnHeight, int logBtnOffsetY, int logBtnOffsetY_B, int logBtnOffsetX)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
logBtnImgPath | String | 登录按钮背景图片 | gt_one_login_btn |
logBtnUncheckedImgPath | String | 未选中隐私栏勾选框时登录按钮的背景图片 | gt_one_login_btn_unchecked |
logBtnWidth | int | 登录按钮宽度 | 268 |
logBtnHeight | int | 登录按钮高度 | 36 |
logBtnOffsetY | int | 登录按钮相对于标题栏下边缘 y 偏移 | 249 |
logBtnOffsetY_B | int | 登录按钮相对于底部 y 偏移 | 0 |
logBtnOffsetX | int | 登录按钮相对于屏幕左边 x 轴偏移量,当为0时表示居中显示 | 0 |
设置登录按钮中间文字相关
setLogBtnTextView(String logBtnText, int logBtnColor, int logBtnTextSize)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
logBtnText | String | 文字设置 | 一键登录 |
logBtnColor | int | 文字颜色,优先按资源id查找,找不到则按固定颜色值设置 | 0xFFFFFFFF |
logBtnTextSize | int | 文字大小 | 15 |
设置登录按钮中间文字的字体相关
setLogBtnTextViewTypeface(Typeface logBtnTextTypeface)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
logBtnTextTypeface | Typeface | 登录按钮中间的文字的字体 | Typeface.DEFAULT |
设置登录按钮在选择框未选择时禁用状态
setLogBtnDisableIfUnChecked(boolean disableBtnIfUnChecked)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
disableBtnIfUnChecked | boolean | 登录按钮中间的文字的字体 | false |
设置loading图片相关
setLogBtnLoadingView(String loadingView, int loadingViewWidth, int loadingViewHeight, int loadingViewOffsetRight) setLogBtnLoadingView(String loadingView, int loadingViewWidth, int loadingViewHeight, int loadingViewOffsetRight, int loadingViewOffsetY)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
loadingView | String | loading 图片地址 | umcsdk_load_dot_white |
loadingViewWidth | int | loading 图片宽度 | 20 |
loadingViewHeight | int | loading 图片高度 | 20 |
loadingViewOffsetRight | int | loading 图片距离登录框右边 x 轴偏移量 | 12 |
loadingViewOffsetY | int | loading 图片距离登录框 y 轴偏移量,可选配,不传该参数默认登录框垂直居中 | 0 |
设置 Slogan 相关
setSloganView(int sloganColor, int sloganSize, int sloganOffsetY, int sloganOffsetY_B, int sloganOffsetX)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
sloganColor | int | 设置 Slogan 字体颜色,优先按资源id查找,找不到则按固定颜色值设置 | 默认0xFFA8A8A8,黑暗模式0xFFD0D1E2 |
sloganSize | int | 设置 Slogan 字体大小 | 10 |
sloganOffsetY | int | 设置 Slogan 相对于标题栏下边缘 y 偏移 | 382 |
sloganOffsetY_B | int | 设置 Slogan 相对于底部 y 偏移 | 0 |
sloganOffsetX | int | 设置 Slogan 相对于屏幕左边 x 轴偏移量,当为0时表示居中显示 | 0 |
设置 Slogan 文字的字体相关
setSloganViewTypeface(Typeface sloganTypeface)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
sloganTypeface | Typeface | Slogan 文字的字体 | Typeface.DEFAULT |
设置隐私条款布局
setPrivacyLayout(int privacyLayoutWidth, int privacyOffsetY, int privacyOffsetY_B, int privacyOffsetX, boolean isUseNormalWebActivity) setPrivacyLayout(int privacyLayoutWidth, int privacyOffsetY, int privacyOffsetY_B, int privacyOffsetX, boolean isUseNormalWebActivity, int gravity)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
privacyLayoutWidth | int | 设置隐私条款宽度,隐私条款大部分为字体,只规定宽度,高度自适应。设置宽度为`ViewGroup.LayoutParams.MATCH_PARENT`,隐私条款的宽度将 填充父布局;设置宽度为`ViewGroup.LayoutParams.WRAP_CONTENT`,隐私条款的宽度将根据文本内容自动扩展;其他情况将按照固定值设置宽度。 | 256 |
privacyOffsetY | int | 设置隐私条款相对于标题栏下边缘 y 偏移 | 0 |
privacyOffsetY_B | int | 设置隐私条款相对于底部 y 偏移 | 18 |
privacyOffsetX | int | 设置隐私条款对于屏幕左边 x 轴偏移量,当为 0 时表示居中显示 | 0 |
isUseNormalWebActivity | boolean | 设置是否跳转到默认的隐私条款页面 | true |
gravity | int | 设置隐私条款选择框和文本的对齐方式,参考LinearLayout的setGravity(int gravity)方法,可选配 | Gravity.CENTER_HORIZONTAL |
注:`privacyOffsetY`与`privacyOffsetY_B`两个偏移量必须有一个为0,否则优先采用`privacyOffsetY_B`。
设置隐私条款选择框相关
setPrivacyCheckBox(String unCheckedImgPath, String checkedImgPath, boolean privacyState, int privacyCheckBoxWidth, int privacyCheckBoxHeight) setPrivacyCheckBox(String unCheckedImgPath, String checkedImgPath, boolean privacyState, int privacyCheckBoxWidth, int privacyCheckBoxHeight, int privacyCheckBoxOffsetY) setPrivacyCheckBox(String unCheckedImgPath, String checkedImgPath, boolean privacyState, int privacyCheckBoxWidth, int privacyCheckBoxHeight, int privacyCheckBoxOffsetY, int privacyCheckBoxMarginRight)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
unCheckedImgPath | String | 设置未选中下按钮的图片地址 | gt_one_login_unchecked |
checkedImgPath | String | 设置选中下按钮的图片地址 | gt_one_login_checked |
privacyState | boolean | 设置选择框是否默认勾选 | false |
privacyCheckBoxWidth | int | 选择框图片宽度 | 9 |
privacyCheckBoxHeight | int | 选择框图片高度 | 9 |
privacyCheckBoxOffsetY | int | 选择框图片Y轴偏移,可选配 | 0 |
privacyCheckBoxMarginRight | int | 选择框图片右边距,可选配 | 5 |
设置隐私条款字体相关
setPrivacyClauseView(int baseClauseColor, int clauseColor, int privacyClauseTextSize)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
baseClauseColor | int | 设置隐私条款基础文字颜色,优先按资源id查找,找不到则按固定颜色值设置 | 默认0xFFA8A8A8,黑暗模式0xFFD0D1E2 |
clauseColor | int | 设置隐私条款协议文字颜色,优先按资源id查找,找不到则按固定颜色值设置 | 0xFF3973FF |
privacyClauseTextSize | int | 设置隐私条款字体大小 | 10 |
设置除了隐私条款其他的字体相关
setPrivacyTextView(String privacyTextViewTv1, String privacyTextViewTv2, String privacyTextViewTv3, String privacyTextViewTv4)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
privacyTextViewTv1 | String | 设置隐私条款文字1 | 登录即同意 |
privacyTextViewTv2 | String | 设置隐私条款文字2 | 和 |
privacyTextViewTv3 | String | 设置隐私条款文字3 | 、 |
privacyTextViewTv4 | String | 设置隐私条款文字4 | 并使用本机号码登录 |
设置隐私栏文字的字体相关
setPrivacyClauseViewTypeface(Typeface privacyClauseBaseTypeface, Typeface privacyClauseTypeface)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
privacyClauseBaseTypeface | Typeface | 隐私栏基础的文字的字体 | Typeface.DEFAULT |
privacyClauseTypeface | Typeface | 隐私条款的文字的字体 | Typeface.DEFAULT |
设置开发者隐私条款相关。
自定义隐私条款顺序。按顺序设置,当有条款名称与条款 URL 一起为空时,则使用默认的运营商隐私条款。否则按照顺序排列,自定义隐私条款最多只能两个。
setPrivacyClauseText(String clauseNameOne, String clauseUrlOne, String clauseNameTwo, String clauseUrlTwo, String clauseNameThree, String clauseUrlThree)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
clauseNameOne | String | 设置隐私条款1名称 | null |
clauseUrlOne | String | 设置隐私条款1 URL | null |
clauseNameTwo | String | 设置隐私条款2名称 | null |
clauseUrlTwo | String | 设置隐私条款2 URL | null |
clauseNameThree | String | 设置隐私条款3名称 | null |
clauseUrlThree | String | 设置隐私条款3 URL | null |
设置多个开发者隐私条款相关。
自定义多个隐私条款。按顺序设置,长度为 4 的倍数,配置后优先使用该接口的配置,否则使用`setPrivacyClauseText`的配置。可通过预留一组空字符串配置让 SDK 自动添加运营商协议。
setPrivacyClauseTextStrings(String... privacyClauseTextStrings)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
privacyClauseTextStrings | String[] | 设置隐私条款数组 | null |
/** *连续四个参数为一组隐私协议条款 第一个为条款说明前缀或者分隔字符,第二个为条款名称,第三个为条款 URL, 第四个为说明后缀或者分隔字符 *任意一组留空,SDK 会自动添加运营商隐私条款,留空的位置可前后调整。 */ .setPrivacyClauseTextStrings("登录即同意", "应用自定义服务条款一", "http://a.b.c", "", "和", "应用自定义服务条款二", "http://x.y.z", "", "和", "应用自定义服务条款三", "http://x.y.z", "", "和", "", "", "并使用本机号码登录")
注:运营商隐私协议必须显示,开发者需保留一组条款参数留空
设置授权页面隐私条款名称显示书名号。
setPrivacyAddFrenchQuotes(boolean privacyAddFrenchQuotes)
注: 个别第三方系统可能存在对包含中文字符的富文本渲染异常,出现文字超出控件右边界显示被截断的情况,建议不要添加书名号。
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
privacyAddFrenchQuotes | boolean | 是否设置隐私条款名称显示书名号 | false |
设置隐私条款文字对齐方式。
setPrivacyTextGravity(int privacyTextGravity)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
privacyTextGravity | int | 设置隐私条款文字对齐方式,参考`TextView.setGravity`方法 | Gravity.TOP|Gravity.START |
设置隐私条款文字行间距,参考`TextView.setLineSpacing`方法。
setPrivacyLineSpacing(float lineSpacingExtra, float lineSpacingMultiplier)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
lineSpacingExtra | float | 设置隐私条款文字行间距,单位: dp | 8.0f |
lineSpacingMultiplier | float | 设置隐私条款文字行间距的倍数 | 1.0f |
设置未同意隐私条款时的文字提示相关。
setPrivacyUnCheckedToastText(String privacyUnCheckedToastText) setPrivacyUnCheckedToastText(boolean enableToast, String privacyUnCheckedToastText)
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
enableToast | boolean | 设置是否弹出 Toast 提示文字,可选配 | true |
privacyUnCheckedToastText | String | 设置未同意隐私条款的文字提示相关 | 请同意服务条款 |
SUCCESS | 提交成功 |
---|---|
ERROR_APPID | AppId不存在 |
ERROR_PARAMS | 请求参数错误 |
ERROR_PLATFORM | 手机平台错误 |
ERROR_ENCRYPTION | 解密失败 |
ERROR _BALANCE | 余额不足 |
返回码 | 描述 | 处理方式 |
---|---|---|
-20101 | app_id 未传,调用 SDK 时传入的 APPID 为空 | 调用初始化‘init‘接口时传入正确的 APPID 参数 |
-20102 | 没有调用预取号接口或者预取号内部还没初始化完成就调用了取号接口 | 1、进阶逻辑下分开调用‘register‘与‘preGetToken‘接口 2、常规逻辑下等‘preGetToken‘收到正确的回调后再调用‘requestToken‘接口 |
-20105 | 预取号超时或者拉起授权页超时,网络信号较差或者配置的超时时间较短 | 1、在网络信号较好的地方重试 2、修改 SDK 超时时间配置,适当延长超时时间 |
-20106 | 取号时用户切换了数据流量或者更换了 SIM 卡 | 1、进阶逻辑下检测到该错误码后关闭授权页,提醒用户重新拉起授权页登录(内部会重新预取号) 2、常规逻辑下检测到该错误码后关闭授权页,重 新预取号 |
-20501 | 调用初始化‘init‘接口时传入的‘context‘参数为空 | 调用初始化‘init‘接口时传入正确的‘context‘参数 |
-20502 | 1、授权页 UI 配置错误 2、集成 SDK 时丢失了部分内部资源文件 | 1、调用‘requestToken‘接口时传入正确的‘oneLoginThemeConfig‘参数,确认使用到的图片资源存在 2、使用文档中推荐的集成方式集成 SDK,不 要解压 aar 文件单独集成 jar 包 3、检测 logcat 错误日志,查看配置出错原因 |
-20503 | 授权页 UI 配置错误,可能资源文件找不到,导致授权页加载异常 | 1、调用‘requestToken‘接口时传入正确的‘oneLoginThemeConfig‘参数,确认使用到的图片资源存在 2、使用文档中推荐的集成方式集成 SDK,不 要解压 aar 文件单独集成 jar 包 3、检测 logcat 错误日志,查看配置出错原因 |
-20200 | 当前网络不可用,可能手机未开启数据流量与 WIFI 网络 | 打开数据流量后重试 |
-20201 | 手机未插入 SIM 卡或者在模拟器中运行 | 建议在支持 SIM 卡的且数据网络访问正常的移动设备上重试 |
-20202 | 手机未开启数据网络或者在模拟器中运行 | 建议打开数据流量后重试 |
-20203 | 使用纯流量卡或者非国内三大运营商手机卡 | 使用国内三大运营商电话卡尝试 |
-20207 | WIFI 下请求切换网络失败 1、未配置‘CHANGE_NETWORK_STATE‘权限 2、网络不稳定或者 SIM 状态异常 | 1、应用内配置‘CHANGE_NETWORK_STATE‘权限重试,检查数据网络是否正常访问 2、SIM 卡识别是否稳定,开关数据网络或者开关飞行模式,或者重 启手机后重试 |
-20301 | 用户在授权页点击了返回键退出授权页 | 等待用户重新拉起授权页登录 |
-20302 | 用户在授权页点击了标题栏返回按钮退出授权页 | 等待用户重新拉起授权页登录 |
-20303 | 用户在授权页点击了切换账号按钮 | 关闭授权页,等待用户选择其他登录方式或者重新拉起授权页登录 |
-20490 | 取号时‘oneLoginThemeConfig‘传递的是空值 | 调用‘requestToken‘接口时传入正确的‘oneLoginThemeConfig‘参数 |
附录:对应运营商的错误码列表:
ERROR_APPID_ROUTE 无运营商匹配信息
错误码 | 含义 |
---|---|
0 | 请求成功 |
-64 | permission-denied(无权限访问) |
-65 | API-request-rates-Exceed-Limitations(调用接口超限) |
-10001 | 取号失败 |
-10002 | 参数错误 |
-10003 | 解密失败 |
-10004 | ip受限 |
-10005 | 异网取号回调参数异常 |
-10006 | Mdn取号失败,且属于电信网络 |
-10007 | 重定向到异网取号 |
-10008 | 超过预设取号阈值 |
-10009 | 时间戳过期 |
-20005 | sign-invalid(签名错误) |
-20006 | 应用不存在 |
-20007 | 公钥数据不存在 |
-20100 | 加密参数解析失败 |
-30001 | 时间戳非法 |
-30003 | topClass失效,请查看5.3+5.4常见问题 |
51002 | 参数为空 |
51114 | 无法获取手机号数据 |
80000 | 请求超时 |
---|---|
80001 | 请求网络异常 |
80002 | 响应码错误 |
80003 | 无网络连接 |
80004 | 移动网络未开启 |
80005 | Socket超时异常 |
80006 | 域名解析异常 |
80007 | IO异常 |
80008 | No route to host |
80009 | nodename nor servname provided, or not known |
80010 | Socket closed by remote peer |
80100 | 登录结果为空 |
80101 | 登录结果异常 |
80102 | 预登录异常 |
80103 | SDK未初始化 |
80104 | 未调用预登录接口 |
80105 | 加载nib文件异常 |
80200 | 用户关闭界面 |
80201 | 其他登录方式 |
80800 | WIFI切换异常 |
80801 | WIFI切换超时 |
状态码类型 | 状态码(status) | 信息(msg) | 示例说明 |
---|---|---|---|
提示型 | 101001 | 授权码不能为空 | 使用 SDK 调用置换接口时没有填入授权码 |
101002 | 认证的手机号不能为空 | 使用 SDK 认证置换时没有填入需要认证的手机号码 | |
101003 | UiConfig 不能为空 | 调用 openActivity 接口时,必须配置 UiConfig | |
101004 | ApiKey 或 PublicKey 不能为空 | ApiKey 或 PublicKey 不能为空未进行初始化,调用 SDKManager.init()进行初始化 | |
101005 | 超时 | 超时超过了接入方设置的时间 | |
101006 | 公钥出错 | 公钥错误,请核对配置的公钥是否与申请的公钥一致 | |
101007 | 用户取消登录 | 免密登录时,进入授权页执行了返回操作` | |
102001 | 选择流量通道失败 | 取号功能必须使用流量访问,在 wifi 和流量同时开启的情况下sdk 会选择使用流量进行访问,此返回码代表切换失败!(受不 同机型的影响) | |
警告型 | 201001 | 操作频繁请,请稍后再试 | 超出 10 分钟之内只能访问 30 次的限制 |
危险性 | 302001 | SDK 解密异常 | 服务端返回数据时 sdk 会进行解密操作,如果解密出错则出现此错误 |
302002 | 网络访问异常 | sdk 网络请求异常 | |
302003 | 服务端数据格式出错 | 服务端返回数据格式错误 |
其他错误 其他方式登录 用户点击了切换账号或其他方式登录
返回码 | 返回码描述 |
---|---|
103000 | 成功 |
102507 | `登录超时(授权页点登录按钮时)` |
103101 | 请求异常 |
103102 | 包签名错误(社区填写的appid和对应的包名包签名必须一致) |
103111 | `错误的运营商请求(可能是用户正在使用代理或者运营商判断失败导致)` |
103119 | appid不存在 |
103211 | `其他错误,联系技术支撑解决问题` |
103412 | 无效的请求(1.加密方式错误;2.非json格式;3.空请求等) |
103414 | 参数校验异常 |
103511 | 服务器ip白名单校验失败 |
103811 | token为空 |
103902 | scrip失效(短时间内重复登录) |
103911 | token请求过于频繁,10分钟内获取token且未使用的数量不超过30个 |
104201 | token已失效或不存在(重复校验或失效) |
105001 | 联通取号失败 |
105002 | 移动取号失败 |
105003 | 电信取号失败 |
105012 | 不支持电信取号 |
105013 | 不支持联通取号 |
返回码 | 返回码描述 |
---|---|
105018 | token权限不足(使用了本机号码校验的token获取号码) |
105019 | 应用未授权(未在开发者社区勾选能力) |
105021 | 当天已达取号限额 |
105302 | appid不在白名单 |
105312 | 余量不足(体验版到期或套餐用完) |
105313 | 非法请求 |
200005 | 用户未授权(READ_PHONE_STATE) |
200010 | 无法识别sim卡或没有sim卡(android) |
200015 | 短信验证码格式错误 |
200020 | 用户取消登录 |
200021 | 数据解析异常 |
200022 | 无网络 |
200023 | 请求超时 |
200024 | 数据网络切换失败 |
200025 | 未知错误一般出现在线程捕获异常,请配合异常打印分析 |
200026 | 输入参数错误 |
200027 | 未开启数据网络或网络不稳定 |
200028 | 网络异常 |
200038 | 异网取号网络请求失败 |
200039 | 异网取号网关取号失败 |
200040 | UI资源加载异常 |
200048 | 用户未安装sim卡 |
200050 | EOF异常 |
200060 | EOF异常 |
200060 | 切换账号(未使用SDK短验时返回) |
200072 | CA根证书校验失败 |
200080 | 本机号码校验仅支持移动手机号 |
200082 | 服务器繁忙 |