概述与资源

本文是 OneLogin Android SDK 的部署文档,用于指导 OneLogin Android SDK 的集成,读者需具有一定 Android 编程知识基础。

1、环境需求

条目 资源
开发目标 移动/电信支持 Android 4.0 以上,联通支持 Android 5.0 以上
开发环境 Android Studio 2.1.3
SDK 三方依赖 com.cmic.sso.sdkcom.unicom.xiaowo.logincn.com.chinatelecom.account.api
包增量 0.8M
网络制式 移动 2G/3G/4G,联通 3G/4G,电信 4G(2G/3G 网络下时延相对较高,成功率相对较低)
网络环境 打开蜂窝数据流量并且给予应用蜂窝数据权限

2、相关开发资料

条目 资源
产品结构流程 交互流程通讯流程
常见问题 常见问题
SDK 资源包 点击下载
SDK 当前版本 2.1.2
(Tips:0.8.0(不含)以下版本升级到该版本,服务端接口必须一同调整,否则会导致电信取号失败)

准备工作

1、创建应用

登录极验后台创建应用获取APPIDAPPKEY,具体步骤可参照账号创建。

2、快速体验 Demo

Android 压缩包附带的 demo 文件夹中是极验的示例工程,使用 Android Studio 打开示例工程,直接运行起来即可进行快速体验测试。

如果开发者需要将SDK集成到自己的项目进行体验,可完成以下配置步骤进行本地测试:

  1. 将包名修改成对应的测试包名;

  2. 将签名配置改成您的签名配置;

  3. APPID换成您在极验管理后台创建生成的信息(需注意APPID和包名/包签名的一致性);

  4. 参照服务端接入文档完成服务端接口的对接。如未完成该步骤则仅能体验APP端功能,不能获取真实手机号。

3、开发环境搭建

3.1、gradle 集成

implementation 'com.geetest.android:onelogin:2.1.2'

3.2、手动集成

导入 SDK 到项目工程并配置开发环境

  1. sdk目录下,将获取的.aar文件拖拽到工程中的 libs 文件夹下。

  2. 在拖入.aar到 libs 文件夹后,还要检查.aar是否被添加到Library,要在项目的 build.gradle 下添加如下代码:

    repositories {
    flatDir {
    dirs 'libs'
    }
    }
  3. 手动将aar包添加依赖:

    implementation(name: 'geetest_onelogin_android_vx.y.z', ext: 'aar')

OneLogin(一键登录)

进阶模式和常规模式是一键登录的两种调用逻辑,如无特别需求建议直接使用进阶模式,两模式不可混合调用。

1、进阶模式

1.1、调用逻辑

预取号逻辑封装在 SDK 内部,开发者只需控制授权页拉起时机。SDK 内部处理预取号的逻辑,包括预取号超期后的重新预取号,以及弱网状态下的重试等。

  1. init()初始化 SDK 并配置APP_ID

  2. register()注册(应用启动或进入登录页的前一个页面、用户登出时是调用该方法的时机)

  3. requestToken()拉起授权页面

  4. dismissAuthActivity()关闭授权页面

1.2、初始化

  • 初始化init

SDK 初始化接口init,可放在 ApplicationonCreate 方法中进行初始化。

方法描述

public void init(Context context);
public void init(Context context, String appId);

参数说明

参数 类型 说明
context Context 上下文
appId String 极验后台配置唯一产品APPID,请在官网申请
  • 注册register

方法描述

注册接口,可同init方法一起放在 Application 的 onCreate 方法中进行注册。

public void register(String appId)
public void register(String appId, int timeout)

参数说明

参数 类型 说明
app_id String 极验后台配置唯一产品APPID,请在官网申请, 如init接口传了 appId 此处可传空值
timeout int 超时时间,单位:ms,取值范围:1000~15000,默认5000

代码示例

OneLoginHelper
.with()
//开启 SDK 日志打印功能
.setLogEnable(true)
//第一个参数为当前 Application 或 Activity 的 Context
//第二个参数为所需要配置的 APP_ID
.init(this, APP_ID)
.register("", 5000);

1.3、拉起授权页

  • 拉起授权页requestToken

方法描述

public void requestToken(OneLoginThemeConfig oneLoginThemeConfig, AbstractOneLoginListener listener)

参数说明

参数 类型 说明
oneLoginThemeConfig OneLoginThemeConfig 自定义全局配置接口,用来配置授权页面 UI 样式
listener AbstractOneLoginListener 回调监听器,需要开发者自己实现

代码示例

取号并获取免密登录的 token,通过接口进行校验,并获取登录信息。

OneLoginHelper
.with()
.requestToken(new OneLoginThemeConfig.Builder().build(), new AbstractOneLoginListener() {
@Override
public void onResult(JSONObject jsonObject) {
try {
int statusResult = jsonObject.getInt("status");
if (statusResult != 200) {
Toast.makeText(getApplicationContext(), jsonObject.toString(), Toast.LENGTH_SHORT).show();
return;
}
new Thread(() -> {
JSONObject json = new JSONObject();
try {
json.put("process_id", jsonObject.getString("process_id"));
json.put("token", jsonObject.getString("token"));
json.put("authcode", jsonObject.optString("authcode"));
} catch (JSONException e) {
e.printStackTrace();
}
String result = HttpUtils.requestNetwork(<---获取用户登录信息的接口--->, json);
///
/// TODO 判断 result 是否有效
///
}).start();
} catch (JSONException e) {
e.printStackTrace();
}
}
});

1.4、关闭授权页

  • 关闭授权页dismissAuthActivity

方法描述

用户主动关闭授权页。SDK 除了返回按钮触发关闭以外,默认是不 finsih 授权页的,需要开发者在回调结束后自行实现关闭授权页

public void dismissAuthActivity()

代码示例

OneLoginHelper.with().dismissAuthActivity();

2、常规模式

2.1、调用逻辑

预取号和授权页拉起时机均由开发者自主控制。使用此调用逻辑,开发者需自主处理预取号的时机和超期重试的逻辑等。

  1. init()初始化 SDK 并配置APP_ID

  2. preGetToken()预取号(应用启动或进入登录页的前一个页面、用户登出时是调用该方法的时机)

  3. requestToken()拉起授权页面(调用该方法前建议先调用isPreGetTokenResultValidate判断预取号是否成功

  4. dismissAuthActivity()关闭授权页

2.2、初始化

  • 初始化init

SDK 初始化接口init,可放在 ApplicationonCreate 方法中进行初始化,或者其他预取号之前调用。

方法描述

public void init(Context context);
public void init(Context context, String appId);

参数说明

参数 类型 说明
context Context 上下文
appId String 极验后台配置唯一产品APPID,请在官网申请

2.3、预取号

  • 预取号preGetToken

方法描述

public void preGetToken(String appId, int timeout, AbstractOneLoginListener oneLoginListener);

参数说明

参数 类型 说明
appId String 产品 ID, 如init接口传了 appId 此处可传空值
timeout int 超时时间,单位:ms,取值范围:1000~15000
oneLoginListener AbstractOneLoginListener 回调监听器,需要开发者自己实现

代码示例

OneLoginHelper
.with()
//第一个参数为所需要配置的APP_ID
//第二个参数为预取号超时时间
//第三个参数为所需实现监听回调结果接口
.preGetToken(APP_ID, 5000, oneLoginListener);

OneLoginHelper
.with()
.setLogEnable(true)
//第一个参数为当前 Application 或 Activity 的 Context
//第二个参数为所需要配置的 APP_ID
.init(context, APP_ID)
.preGetToken("", 5000, new AbstractOneLoginListener() {
@Override
public void onResult(JSONObject jsonObject) {
oneLoginResult.onResult();
Log.i(TAG, "预取号结果为:" + jsonObject.toString());
try {
int status = jsonObject.getInt("status");
if (status == ONE_LOGIN_SUCCESS_STATUS) {
if (isRequestToken) {
oneLoginRequestToken();
}
} else {
ToastUtils.toastMessage(context, "预取号失败:" + jsonObject.toString());
}
} catch (JSONException e) {
ToastUtils.toastMessage(context, "预取号失败:" + jsonObject.toString());
}
}
});
};

2.4、拉起授权页

  • 拉起授权页requestToken

方法描述

public void requestToken(OneLoginThemeConfig oneLoginThemeConfig, AbstractOneLoginListener listener)

参数说明

参数 类型 说明
oneLoginThemeConfig OneLoginThemeConfig 自定义全局配置接口,用来配置授权页面 UI 样式
listener AbstractOneLoginListener 回调监听器,需要开发者自己实现

代码示例

取号并获取免密登录的 token,通过接口进行校验,并获取登录信息。

if (!OneLoginHelper.with().isPreGetTokenResultValidate()) {
//预取号已过期或者失效,需要重新预取号, 此处可显示自定义加载对话框
return;
}
OneLoginHelper
.with()
.requestToken(new OneLoginThemeConfig.Builder().build(), new AbstractOneLoginListener() {
@Override
public void onResult(JSONObject jsonObject) {
try {
int statusResult = jsonObject.getInt("status");
if (statusResult !=200) {
Toast.makeText(getApplicationContext(), jsonObject.toString(), Toast.LENGTH_SHORT).show();
return;
}
new Thread(() -> {
JSONObject json = new JSONObject();
try {
json.put("process_id", jsonObject.getString("process_id"));
json.put("token", jsonObject.getString("token"));
json.put("authcode", jsonObject.optString("authcode"));
} catch (JSONException e) {
e.printStackTrace();
}
String result = HttpUtils.requestNetwork(<---获取用户登录信息的接口--->, json);
///
/// TODO 判断 result 是否有效
///
}).start();
} catch (JSONException e) {
e.printStackTrace();
}
}
});

2.5、关闭授权页

  • 关闭授权页dismissAuthActivity

方法描述

用户主动关闭授权页。SDK 除了返回按钮触发关闭以外,默认是不 finsih 授权页的,需要开发者在回调结束后自行实现关闭授权页

public void dismissAuthActivity()

代码示例

OneLoginHelper.with().dismissAuthActivity();

授权页面 UI 修改

通过实例化 OneLoginThemeConfig 并进行自定义配置,完成授权页面 UI 的个性化设计,每次调用拉起授权页方法前必须先传入该实例,否则授权界面会展示异常。授权页 UI 设计规范如下:

OneLogin Android 样式规范

1、创建实例

  • 创建实例
OneLoginThemeConfig oneLoginThemeConfig = new OneLoginThemeConfig.Builder().build();

2、弹框模式设置

  • 设置弹窗主题相关setDialogTheme

方法描述
设置弹窗主题相关。

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

3、添加自定义控件

  • 添加自定义控件addOneLoginRegisterViewConfig

方法描述

requestToken()方法之前实现。允许开发者在授权页面titlebarbody添加自定义的控件
注意:自定义的控件不允许覆盖 SDK 默认的 UI。

public OneLoginHelper addOneLoginRegisterViewConfig(String id, AuthRegisterViewConfig authRegisterViewConfig)

代码示例

OneLoginHelper.with().addOneLoginRegisterViewConfig(id, authRegisterViewConfig);

参数说明

参数 类型 说明
id String 开发者自定义控件名称
authRegisterViewConfig AuthRegisterViewConfig 配置开发者自定义控件的控件来源,位置和处理逻辑等
  • 实例化 AuthRegisterViewConfig 自定义控件配置

接口描述

创建自定义控件配置

AuthRegisterViewConfig authRegisterViewConfig = new AuthRegisterViewConfig.Builder().build();

方法说明

方法名 传参类型 说明
setView View 开发者传入自定义的控件,需要设置好控件的布局属性,SDK 只支持RelativeLayout布局
setRootViewId int 设置控件的位置。
RootViewId.ROOT_VIEW_ID_TITLE_BAR指标题栏
RootViewId.ROOT_VIEW_ID_BODY指授权页空白处
setCustomInterface CustomInterface 设置控件事件。CustomInterface 是一个接口,自定义实现点击方法

4、授权页面其他配置

  • 设置授权页面背景setAuthBGImgPath

方法描述

设置背景图片。

setAuthBGImgPath(String authBGImgPath)

参数说明

参数 参数类型 说明 默认值
authBGImgPath String 设置背景图片。放在 drawable 文件下,以下背景图片路径与之保持一致 gt_one_login_bg
  • 状态栏设置setStatusBar

方法描述

设置状态栏颜色、字体颜色。

setStatusBar(int statusBarColor,int navigationBarColor,boolean isLightColor)

参数说明

参数 参数类型 说明 默认值
statusBarColor int 自定义状态栏背景颜色 0
navigationBarColor int 自定义底部导航栏背景颜色 0
isLightColor boolean 设置状态栏内容的颜色(只能黑白),true 为黑色,false 为白色 false
  • 标题栏设置setAuthNavLayout

方法描述

设置标题栏布局

setAuthNavLayout(int navColor, int authNavHeight, boolean authNavTransparent, boolean authNavGone)

参数说明

参数 参数类型 说明 默认值
navColor int 标题栏颜色 0xFF3973FF
authNavHeight int 标题栏高度 49
authNavTransparent boolean 标题栏是否透明 true
authNavGone boolean 标题栏是否隐藏,此处的隐藏为 View.GONE false
  • 标题栏文字设置setAuthNavTextView

方法描述
设置标题栏中间文字相关

setAuthNavTextView(String navText, int navTextColor, int navTextSize, boolean navTextNormal, String navWebViewText, int navWebViewTextColor, int navWebViewTextSize)

参数说明

参数 参数类型 说明 默认值
navText String 文字设置 一键登录
navTextColor int 字体颜色 0xFFFFFFFF
navTextSize int 字体大小,单位为sp,以下设置字体大小的单位与之保持一致 17
navTextNormal boolean 设置是否隐私条款页面的标题栏中间文字使用默认值,true 为使用navWebViewText,false为使用默认隐私条款的名字 false
navWebViewText String 隐私条款页面的标题栏中间文字 服务条款
navWebViewTextColor int 隐私条款页面的标题栏中间文字颜色 0xFF000000
navWebViewTextSize int 隐私条款页面的标题栏中间文字大小 17
  • 标题栏字体设置setAuthNavTextViewTypeface

方法描述

设置标题栏中间文字的字体相关

setAuthNavTextViewTypeface(Typeface navTextTypeface,Typeface navWebViewTextTypeface)

参数说明

参数 参数类型 说明 默认值
navTextTypeface Typeface 标题栏的文字的字体 Typeface.DEFAULT
navWebViewTextTypeface Typeface 条款页面标题栏的文字的字体 Typeface.DEFAULT
  • 标题栏返回按钮设置setAuthNavReturnImgView

方法描述

设置标题栏返回按钮相关

setAuthNavReturnImgView(String navReturnImgPath, int returnImgWidth, int returnImgHeight, boolean navReturnImgHidden, int returnImgOffsetX)
setAuthNavReturnImgView(String navReturnImgPath, int returnImgWidth, int returnImgHeight, boolean navReturnImgHidden, int returnImgOffsetX, int returnImgOffsetY)

参数说明

参数 参数类型 说明 默认值
navReturnImgPath String 返回按钮图片 gt_one_login_ic_chevron_left_black
returnImgWidth int 返回按钮图片宽度 24
returnImgHeight int 返回按钮图片高度 24
navReturnImgHidden boolean 返回按钮是否隐藏 false
returnImgOffsetX int 返回按钮图片距离屏幕左边X轴偏移量 12
returnImgOffsetY int 返回按钮图片距离标题栏顶部偏移量,可选配,不传该参数默认标题栏垂直居中 0
  • logo设置setLogoImgView

方法描述

设置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

方法描述

设置号码相关

setNumberView(int numberColor, int numberSize, int numFieldOffsetY, int numFieldOffsetY_B, int numFieldOffsetX)

参数说明

参数 参数类型 说明 默认值
numberColor int 号码栏字体颜色 0xFF3D424C
numberSize int 号码栏字体大小 24
numFieldOffsetY int 号码栏相对于标题栏下边缘 y 偏移 200
numFieldOffsetY_B int 号码栏相对于底部 y偏移 0
numFieldOffsetX int 号码栏相对于屏幕左边 x 轴偏移量,当为 0 时表示居中显示 0
  • 号码字体设置setNumberViewTypeface

方法描述

设置号码栏字体相关

setNumberViewTypeface(Typeface numberViewTypeface)

参数说明

参数 参数类型 说明 默认值
numberViewTypeface Typeface 号码栏的文字的字体 Typeface.DEFAULT
  • 切换账号视图设置setSwitchView

方法描述

设置切换账号相关

setSwitchView(String switchText, int switchColor, int switchSize, boolean switchAccHidden, int switchAccOffsetY, int switchOffsetY_B, int switchOffsetX)

参数说明

参数 参数类型 说明 默认值
switchText String 切换账号文字 切换账号
switchColor String 切换账号字体颜色 0xFF3973FF
switchSize int 切换账号字体大小 14
switchAccHidden boolean 切换账号是否隐藏 false
switchAccOffsetY int 切换账号相对于标题栏下边缘 y 偏移 249
switchOffsetY_B int 切换账号相对于底部 y 偏移 0
switchOffsetX int 切换账号相对于屏幕左边 x 轴偏移量,当为0时表示居中显示 0
  • 切换账号视图背景设置setSwitchViewLayout

方法描述

设置切换账号背景图片与宽高相关

setSwitchViewLayout(String switchImgPath, int switchWidth, int switchHeight)

参数说明

参数 参数类型 说明 默认值
switchImgPath String 切换账号背景图片 默认无背景
switchWidth int 切换账号背景宽度 80
switchHeight int 切换账号背景高度 25
  • 切换账号字体设置setSwitchViewTypeface

方法描述

设置切换账号字体相关

setSwitchViewTypeface(Typeface switchViewTypeface)

参数说明

参数 参数类型 说明 默认值
switchViewTypeface Typeface 切换账号的文字的字体 Typeface.DEFAULT
  • 登录按钮布局设置setLogBtnLayout

方法描述

设置登录按钮布局

setLogBtnLayout(String loginImgPath, int logBtnWidth, int logBtnHeight, int logBtnOffsetY, int logBtnOffsetY_B, int logBtnOffsetX)

参数说明

参数 参数类型 说明 默认值
loginImgPath String 登录按钮背景图片 gt_one_login_btn_normal
logBtnWidth int 登录按钮宽度 268
logBtnHeight int 登录按钮高度 36
logBtnOffsetY int 登录按钮相对于标题栏下边缘 y 偏移 249
logBtnOffsetY_B int 登录按钮相对于底部 y 偏移 0
logBtnOffsetX int 登录按钮相对于屏幕左边 x 轴偏移量,当为0时表示居中显示 0
  • 登录按钮文字设置setLogBtnTextView

方法描述

设置登录按钮中间文字相关

setLogBtnTextView(String loginButtonText, int loginButtonColor, int logBtnTextSize)

参数说明

参数 参数类型 说明 默认值
loginButtonText String 文字设置 一键登录
loginButtonColor int 文字颜色 0xFFFFFFFF
logBtnTextSize int 文字大小 15
  • 登录按钮文字字体设置setLogBtnTextViewTypeface

方法描述

设置登录按钮中间文字的字体相关

setLogBtnTextViewTypeface(Typeface logBtnTextViewTypeface)

参数说明

参数 参数类型 说明 默认值
logBtnTextViewTypeface Typeface 登录按钮中间的文字的字体 Typeface.DEFAULT
  • 登录按钮可用状态随选择框选择状态变化设置setLogBtnDisableIfUnChecked

方法描述

设置登录按钮在选择框未选择时禁用状态

setLogBtnDisableIfUnChecked(boolean disableBtnIfUnChecked)

参数说明

参数 参数类型 说明 默认值
disableBtnIfUnChecked boolean 登录按钮是否在选择框未选择时自动禁用 false
  • 登录加载视图设置setLogBtnLoadingView

方法描述

设置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
  • 标语设置setSloganView

方法描述

设置 Slogan 相关

setSloganView(int sloganColor, int sloganSize, int sloganOffsetY, int sloganOffsetY_B, int sloganOffsetX)

参数说明

参数 参数类型 说明 默认值
sloganColor int 设置 Slogan 字体颜色 0xFFA8A8A8
sloganSize int 设置 Slogan 字体大小 10
sloganOffsetY int 设置 Slogan 相对于标题栏下边缘 y 偏移 382
sloganOffsetY_B int 设置 Slogan 相对于底部 y 偏移 0
sloganOffsetX int 设置 Slogan 相对于屏幕左边 x 轴偏移量,当为0时表示居中显示 0
  • 标语字体设置setSloganViewTypeface

方法描述

设置 Slogan 文字的字体相关

setSloganViewTypeface(Typeface sloganViewTypeface)

参数说明

参数 参数类型 说明 默认值
sloganViewTypeface Typeface Slogan 文字的字体 Typeface.DEFAULT
  • 隐私栏布局设置setPrivacyLayout

方法描述

设置隐私条款布局

setPrivacyLayout(int privacyLayoutWidth, int privacyOffsetY, int privacyOffsetY_B, int privacyOffsetX,boolean isUseNormalWebActivity)

参数说明

参数 参数类型 说明 默认值
privacyLayoutWidth int 设置隐私条款宽度,隐私条款大部分为字体,只规定宽度,高度自适应 256
privacyOffsetY int 设置隐私条款相对于标题栏下边缘 y 偏移 0
privacyOffsetY_B int 设置隐私条款相对于底部 y 偏移 18
privacyOffsetX int 设置隐私条款对于屏幕左边 x 轴偏移量,当为 0 时表示居中显示 0
isUseNormalWebActivity boolean 设置是否跳转到默认的隐私条款页面 true

注:privacyOffsetYprivacyOffsetY_B两个偏移量必须有一个为0,否则优先采用privacyOffsetY_B

  • 隐私栏勾选框设置setPrivacyCheckBox

方法描述

设置隐私条款选择框相关

setPrivacyCheckBox(String unCheckedImgPath, String checkedImgPath, boolean privacyState, int privacyCheckBoxWidth, int privacyCheckBoxHeight)
setPrivacyCheckBox(String unCheckedImgPath, String checkedImgPath, boolean privacyState, int privacyCheckBoxWidth, int privacyCheckBoxHeight, int privacyCheckBoxOffsetY)

参数说明

参数 参数类型 说明 默认值
unCheckedImgPath String 设置未选中下按钮的图片地址 gt_one_login_unchecked
checkedImgPath String 设置选中下按钮的图片地址 gt_one_login_checked
privacyState boolean 设置选择框是否默认选中 true
privacyCheckBoxWidth int 选择框图片宽度 9
privacyCheckBoxHeight int 选择框图片高度 9
privacyCheckBoxOffsetY int 选择框图片Y轴偏移,可选配 2
  • 隐私条款文字显示设置setPrivacyClauseView

方法描述

设置隐私条款字体相关

setPrivacyClauseView(int baseClauseColor, int color, int privacyClauseTextSize)

参数说明

参数 参数类型 说明 默认值
baseClauseColor int 设置隐私条款基础文字颜色 0xFFA8A8A8
color int 设置隐私条款协议文字颜色 0xFF3973FF
privacyClauseTextSize int 设置隐私条款字体大小 10
  • 隐私条款文字设置setPrivacyTextView

方法描述

设置除了隐私条款其他的字体相关

setPrivacyTextView(String privacyTextViewTv1, String privacyTextViewTv2, String privacyTextViewTv3, String privacyTextViewTv4)

参数说明

参数 参数类型 说明 默认值
privacyTextViewTv1 String 设置隐私条款文字1 登录即同意
privacyTextViewTv2 String 设置隐私条款文字2
privacyTextViewTv3 String 设置隐私条款文字3
privacyTextViewTv4 String 设置隐私条款文字4 并使用本机号码登录
  • 设置隐私栏文字的字体setPrivacyClauseViewTypeface

方法描述

设置隐私栏文字的字体相关

setPrivacyClauseViewTypeface(Typeface privacyClauseBaseTextViewTypeface, Typeface privacyClauseTextViewTypeface)

参数说明

参数 参数类型 说明 默认值
privacyClauseBaseTextViewTypeface Typeface 隐私栏基础的文字的字体 Typeface.DEFAULT
privacyClauseTextViewTypeface Typeface 隐私条款的文字的字体 Typeface.DEFAULT
  • 开发者隐私条款设置setPrivacyClauseText

方法描述

设置开发者隐私条款相关。

自定义隐私条款顺序。按顺序设置,当有条款名称与条款 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
  • 开发者隐私条款设置setPrivacyClauseTextStrings

方法描述

设置多个开发者隐私条款相关。

自定义多个隐私条款。按顺序设置,长度为 4 的倍数,配置后优先使用该接口的配置,否则使用setPrivacyClauseText的配置。

setPrivacyClauseTextStrings(String... privacyClauseTextStrings)

参数说明

参数 参数类型 说明 默认值
privacyClauseTextStrings String[] 设置隐私条款数组 null

代码示例

/**
*连续四个参数为一组隐私协议条款 第一个为条款说明前缀或者分隔字符,第二个为条款名称,第三个为条款 URL,第四个为说明后缀或者分隔字符
*/
.setPrivacyClauseTextStrings("登录即同意", "应用自定义服务条款一", "http://a.b.c", "",
"和", "应用自定义服务条款二", "http://x.y.z", "",
"和", "应用自定义服务条款三", "http://x.y.z", "",
"和", "中国移动认证服务条款", "http://wap.cmpassport.com/resources/html/contract.html", "")

注:

开发者需要自行添加运营商隐私协议

  • 隐私条款名称显示书名号相关setPrivacyAddFrenchQuotes

方法描述

设置隐私条款名称显示书名号相关。

setPrivacyAddFrenchQuotes(boolean privacyAddFrenchQuotes)

参数说明

参数 参数类型 说明 默认值
privacyAddFrenchQuotes boolean 是否设置隐私条款名称显示书名号 false
  • 未同意隐私条款时的文字提示setPrivacyUnCheckedToastText

方法描述

设置未同意隐私条款时的文字提示相关。

setPrivacyUnCheckedToastText(String privacyUnCheckedToastText)

参数说明

参数 参数类型 说明 默认值
privacyUnCheckedToastText String 设置未同意隐私条款的文字提示相关 请同意服务条款

其他接口说明

1、横竖屏设置

  • 设置横竖屏setRequestedOrientation

方法描述

设置授权页前个页面的方向,授权页默认通过android:screenOrientation="behind"跟随前个页面的方向。

public void setRequestedOrientation(Activity activity, boolean isPortrait)

代码示例

OneLoginHelper.with().setRequestedOrientation(MainActivity.this, true);

参数说明

参数 类型 说明
activity Activity 当前调用 OneLogin 的页面
isPortrait boolean 是否是竖屏

2、回调接口实现

通过实现AbstractOneLoginListener接口,通过它的多个回调可获取预取号、拉起授权页取号时的各种返回状态与结果,每次调用拉起授权页方法前必须先传入该接口的实现,否则不能正常拉起授权页。

2.1、结果返回

方法描述

当前流程的结果返回。取号成功、取号失败、切换账号、点返回或者按返回键从授权页返回取消登录等都从该回调返回结果,具体请参考 OneLogin 返回码。

public onResult(JSONObject jsonObject)

参数说明

参数 类型 说明
jsonObject JSONObject 回调信息

jsonObject 的参数说明

  • 取号成功
参数名 必须 类型 说明
msg String 运营商返回的状态信息
process_id String 流水号(有效期10分钟)
app_id String 极验后台配置唯一 id
operatorType String 客户端获取的运营商
clienttype String 客户端,1 表示 Android
sdk String SDK 的版本号
status int 状态码,状态码为 200
token String 运营商返回的accessToken
authcode String 电信运营商返回的authcode
  • 取号失败
参数名 必须 类型 说明
errorCode String 错误码
msg String 运营商返回的状态信息
process_id String 流水号(有效期10分钟)
app_id String 极验后台配置唯一 id
metadata JSONObject 具体的错误原因
operatorType String 客户端获取的运营商
clienttype String 客户端,1 表示 Android
sdk String SDK 的版本号
status int 状态码,状态码为 500

2.2、获取脱敏手机号

方法描述

获取用于界面展示的脱敏手机号

public void onRequestTokenSecurityPhone(String phone)

参数说明

参数 类型 说明
phone String 脱敏手机号

2.3、隐私条款点击

方法描述

隐私条款点击回调

public void onPrivacyClick(String name, String url)

参数说明

参数 类型 说明
name String 隐私条款名称
url String 隐私条款地址

2.4、登录按钮点击

方法描述

登录按钮点击回调

public void onLoginButtonClick()

2.5、授权页面拉起

方法描述

授权页面拉起回调

public void onAuthActivityCreate(Activity activity)

参数说明

参数 类型 说明
activity Activity 授权页面

2.6、隐私条款页面拉起

方法描述

隐私条款页面拉起回调

public void onAuthWebActivityCreate(Activity activity)

参数说明

参数 类型 说明
activity Activity 隐私条款页面

2.7、隐私条款 CheckBox 点击

方法描述

CheckBox点击回调

public void onPrivacyCheckBoxClick(boolean isChecked)

参数说明

参数 类型 说明
isChecked boolean CheckBox 是否点击

2.8、一键登录结合其他验证方式

方法描述

点一键登录时是否先调用其他验证方式进行验证

public boolean onRequestOtherVerify()

参数说明

参数 类型 说明 默认值
返回值 boolean 是否先调用其他验证方式进行验证 false

3、日志打印

  • 日志打印控制setLogEnable

方法描述

设置是否开启 SDK 日志打印功能,默认是开启的。

public void setLogEnable(boolean logEnable)

参数说明

参数 类型 说明
logEnable boolean 是否开启日志

代码示例

OneLoginHelper.with().setLogEnable(false);

4、预取号状态判断

  • 取号是否有效isPreGetTokenResultValidate

方法描述

判断是否预取号结果是否有效,预取号失败、预取号结果超期、预取号结果已使用情况均返回预取号结果失效。

public boolean isPreGetTokenResultValidate()

代码示例

OneLoginHelper.with().isPreGetTokenResultValidate();

5、SDK 版本号

  • 获取 SDK 版本号sdkVersion

方法描述

获取 SDK 版本号

public void sdkVersion()

代码示例

OneLoginHelper.with().sdkVersion()

6、初始化状态判断

  • 初始化是否成功isInitSuccess

方法描述

判断是否初始化成功,cancel 之后必须重新初始化。

public boolean isInitSuccess()

代码示例

OneLoginHelper.with().isInitSuccess();

7、隐私条款是否勾选

  • 隐私条款是否勾选isPrivacyChecked

方法描述

判断是否勾选同意隐私条款声明。

public boolean isPrivacyChecked()

代码示例

OneLoginHelper.with().isPrivacyChecked();

8、关闭授权页加载动画

  • 关闭授权页面的 loading stopLoading

方法描述

关闭授权页面的 loading,在校验方法中实现

public void stopLoading()

代码示例

OneLoginHelper.with().stopLoading();

9、一键登录延迟取号

  • 点一键登录后延迟取号 requestTokenDelay

方法描述

点击一键登录后,onRequestOtherVerify 回调返回 true, 先进行其他方式进行预校验,校验通过后通过该接口通知 SDK 进行取号

public void requestTokenDelay()

代码示例

OneLoginHelper.with().requestTokenDelay();

OnePass(本机号码认证)

1、调用逻辑

  • init()初始化 SDK

  • getToken()获取手机号对应的Token

2、接口配置

  • 初始化接口
OnePassHelper.with().init(MainActivity.this);
  • 本机号校验接口
OnePassHelper.with().getToken(phone, appId, onePassListener);
//第一个参数为输入的手机号码
//第二个参数为所需要配置的APP_ID
//第三个参数为所需实现监听回调结果接口
  • 回调实现接口
OnePassListener onePassListener = new OnePassListener() {
@Override
public void onTokenFail(JSONObject jsonObject) {
//过程中出现的错误,具体参考下方错误码
}

@Override
public void onTokenSuccess(JSONObject jsonObject) {
//SDK 输出的参数,通过这些参数请求 verifyUrl 判断是否是本机号
}

@Override
public boolean onAlgorithm() {
//是否需要加密手机号,true 表示加密,false 表示不加密
}
};

3、示例代码

3.1、初始化

  • 初始化

在项目的具体页面的onCreate方法里面进行初始化。

OnePassHelper.with().init(MainActivity.this);

3.2、本机号校验

OnePassListener onePassListener = new OnePassListener() {
@Override
public void onTokenFail(JSONObject jsonObject) {
Log.i(Constants.TAG, "onTokenFail:" + jsonObject.toString());
Utils.toastMessage(OnePassActivity.this, "本机认证失败");
progressDialog.dismiss();
}

@Override
public void onTokenSuccess(final JSONObject jsonObject) {
Log.i(Constants.TAG, "onTokenSuccess:" + jsonObject.toString());
try {
jsonObject.put("id_2_sign", Constants.APP_ID_OP);
jsonObject.put("phone", phoneNumber);
} catch (JSONException e) {
e.printStackTrace();
}
Log.i(Constants.TAG, "开始请求 checkgateway:" + jsonObject.toString());
//请求服务端接口校验手机号码
CheckGatewayTask checkGatewayTask = new CheckGatewayTask(OnePassActivity.this, jsonObject, progressDialog);
checkGatewayTask.execute(Constants.CHECK_GATE_WAY);
}
};

OnePassHelper.with().getToken(phone, appId, onePassListener);

3.3、关闭页面

在页面关闭的时候执行此方法。

@Override
protected void onDestroy() {
super.onDestroy();
OnePassHelper.with().cancel();
}

返回码

1、OneLogin(一键登录)

一键登录OneLogin产品的返回码说明

Code Description
-20101 app_id 未传
-20102 没有预取号就进行取号
-20105 预取号超时或者拉起授权页超时
-20106 取号时更换了 SIM 卡
-20501 当前上下文未传
-20502 授权页未配置
-20503 授权页面加载异常
-20200 当前网络不可用
-20201 当前手机没有电话卡
-20202 当前未开启数据网络
-20203 不支持的运营商
-20301 退出取号页面
-20302 按返回键退出取号页面
-20303 切换账号登陆方式
-40101 移动运营商预取号失败
-40201 联通运营商预取号失败
-40301 电信运营商预取号失败
-40102 移动运营商取号失败
-40202 联通运营商取号失败
-40302 电信运营商取号失败
-50100 SDK 内部请求 pre_get_token 接口返回异常
-50101 SDK 内部请求 pre_get_token 接口解密失败

2、OnePass(本机号码认证)

本机号认证OnePass产品的返回码说明

Code Description
-20100 手机号未传
-20101 app_id 未传
-20200 当前网络不可用
-20201 当前手机没有电话卡
-20202 当前手机有电话卡但是未开启数据网络
-20203 ConnectivityManager不存在
-20204 WIFI 下走数据流量出现错误
-20205 检测当前走数据流量超时,请检测当前卡是否欠费
-20206 开启enableHIPRI失败
-20207 WIFI 下请求切换网络失败
-30200 SDK 内部请求PreGateWay 接口超时
-40101 移动运营商获取 token 失败
-40104 移动不支持的网络制式
-40201 联通运营商获取 token 失败
-40204 联通不支持的网络制式(不支持 2G)
-40301 电信运营商获取 token 失败
-40305 电信不支持的网络制式(不支持 2G, 3G)
-50100 SDK 内部请求 PreGateWay 接口解密失败
-50101 SDK 内部请求 PreGateWay 接口返回错误

插件资源

客户端集成插件(除了原生的 Android SDK 之外,OneLogin 提供主流的开发工具集成插件)

React Native:https://github.com/GeeTeam/gt-onelogin-rn-example

Flutter:https://github.com/GeeTeam/gt-onelogin-flutter-example