一、概述与资源

本产品为 App 实现机主身份验证功能,包含运营商短信验证,本机号一键登录,本机号校验功能。 本机号一键登录是我们的主打推荐产品,为客户提供便捷快速登录操作,短信验证码为一键登录辅助功能。

【说明】: 风控评估能力仅在 V2.3.2 新版本中才可使用。如需使用需开通申请需求。其中风控详细说明见 SDK 中的风控说明文档。

1、环境需求

开发环境 Android Studio 2.1.3
最低支持 Android API 19
SDK 三方依赖 com.cmic.sso.sdk 、 com.unicom 、 cn.com.chinatelecom.account
网络环境 蜂窝数据(必须开启)或者蜂窝数据+wifi ,赋予网络权限

2、开发资源

SDK 当前版本 V2.3.3
SDK 当前版本更新内容 1.未勾选同意协议时的提示内容以及提示位置
2.未勾选协议时,点击一键登录,新增一个回调
3.修改已知 bug
3.授权页条款添加添加点击事件
4.添加设置条款勾选框状态方法
5.移动SDK升级-不再收集用户IMEI信息等不可变更的设备唯一标识
历史版本 详见历史版本

3、业务流程

您需要在APP中集成SDK,并在服务端完成API对接。全流程主要分为四个步骤:

第一步,初始化;

第二步,预取号;

第三步,拉取授权页;

第四步,一键登录授权;

第五步,服务端API置换号码(如下图);

图片

二、集成开发

1、SDK资源包内容

  • JAR :sai_sdk_xxx.jar;
  • JniLibs : libCtaApiLib.so(含:arm64-v8a,armeabi,armeabi-v7a,x86,x86_64);
  • res-umc : sdk所需资源文件及activity布局文件(anim, drawable, drawable-xxhdpi, layout, values文件);
  • layout:新增activity_oauth.xml、activity_oauth_ctc.xml,不可缺,v2.3.0新增;注意AndroidX与support包的区别
  • assets: uniaccount_classez.jar与 联通认证classes资源包,不可缺,v2.2.0新增;
  • assets:新增cucc/host_cucc.properties,增加联通通道,不可缺,v2.3.0新增;

2、Android Studio集成

  1. 将 *.jar 拷贝到工程的libs目录下,如没有该目录,可新建。
  2. 将sdk所需要的资源文件(anim, drawable, drawable-xxhdpi, layout, values文件)从demo工程 res-umc 目录下的文件添加到项目工程中。
  3. 将 jniLibs 拷贝到工程的main目录下。
  4. 将uniaccount_classez.jar包 和cucc/host_cucc.properties添加到 assets 目录下,如没有该目录,可在main目录下新建。

前四步的流程见集成流程图,如下:

图片

  1. build.gradle文件下新增对应的配置,配置如下:
android {
....
// 配置res-umc 资源目录
sourceSets {
main {
res.srcDirs = ['src/main/res''src/main/res-umc']
jni.srcDirs = []
jniLibs.srcDirs = ['src/main/jniLibs']
}
}
}
dependencies {
implementation files('libs/sai_sdk_xxx.jar')
}
  1. AndroidManifest.xml 文件中添加对应的权限
<uses-permission android:name="android.permission.INTERNET"/>
<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"/>

对应权限对应的功能(缺一不可)

权限名 功能
INTERNET 网络权限
ACCESS_WIFI_STATE 获取wifi状态
ACCESS_NETWORK_STATE 获取手机网络状态
CHANGE_NETWORK_STATE 网络切换,wifi切换至蜂窝数据
  1. 配置授权登录activity

开发者根据需要配置横竖屏方向: android:screenOrientation 示列代码为 portrait(竖屏)
注意: v2.3.0版本新增OauthActivity、OauthActivityCtc,需要添加到AndroidManifest配置中。

<!-- 移动、电信、联通授权页面 -->
<activity
android:name="org.ox.base.OxLoginActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:exported="false"
android:launchMode="singleTop"
android:theme="@style/umcsdk_dialog_style" />
<activity
android:name="com.cmic.sso.sdk.activity.LoginAuthActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:exported="false"
android:launchMode="singleTop"
android:theme="@style/umcsdk_dialog_style" />
<activity
android:name="cn.com.chinatelecom.account.sdk.ui.AuthActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:exported="false"
android:launchMode="singleTop"
android:theme="@style/umcsdk_dialog_style" />
<activity
android:name="com.sdk.mobile.manager.login.cucc.OauthActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:exported="false"
android:launchMode="singleTop"
android:theme="@style/umcsdk_dialog_style" />
<activity
android:name="com.sdk.mobile.manager.login.ctc.OauthActivityCtc"
android:configChanges="orientation|keyboardHidden|screenSize"
android:exported="false"
android:launchMode="singleTop"
android:theme="@style/umcsdk_dialog_style" />
  1. 配置Android 9.0对Http的支持 : 目前移动取号部分接口暂未支持https,需要配置http协议支持。

方式一 : 在清单文件里配置以下代码:

android:usesCleartextTraffic="true"

方式二 : 在资源文件新建xml目录,新建文件 network_security_config.xml, 在清单文件中配置

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
<!-- AndroidManifest.xml -->
android:networkSecurityConfig="@xml/network_security_config"
  1. 添加混淆配置
# SAI SDK基本功能
-dontwarn org.ox.**
-keep class org.ox.** { *; }
# 运营商SDK 移动 联通 电信
-dontwarn com.cmic.**
-keep class com.cmic.** { *; }
-dontwarn com.unicom.**
-keep class com.unicom.** { *; }
-dontwarn cn.com.chinatelecom.**
-keep class cn.com.chinatelecom.** { *; }
-dontwarn com.sdk.**
-keep class com.sdk.** { *;}

注意:使用微信开源混淆工具的小伙伴,需要在build.gradle文件下额外配置相关的资源过滤规则(白名单),否则会导致UI空白、闪退等问题。

andResGuard {
whiteList = [
"R.anim.umcsdk_**",
            "R.drawable.ct_account_brand_logo",
            "R.drawable.umcsdk_**",
            "R.layout.activity_oauth",
            "R.layout.activity_oauth_ctc",
            "R.layout.umcsdk_login_auth",
            "R.layout.umcsdk_login_auth_dialog",
            "R.layout.umcsdk_login_btn",
            "R.id.**",
            "R.string.**",
            "R.color.**",
            "R.style.**"
]
}

参见:
build.gradle

三、一键登录

1、调用逻辑

a. 初始化SDK

b. 调用预取号(可省略-建议使用)

c. 调用一键登录(内部包含判断是否取号)-拉起授权页

d. 判断登录结果

e. 关闭授权页面

2、初始化

  • 初始化SDK

方法描述

初始化SDK, 注意:请勿多次调用 ,V2.3.2版本可使用Application 进行初始化;建议使用Activity进行初始化

/**
* SDK初始化 请勿多次调用
*
* @param context 上下文
* @param param 参数 json 数据格式
* @param pNotifier 回调对象
* @return 大于等于0执行,结果回调。 以下几种请情况直接返回,不回调
* 1:SDK已经初始化完成,无需多次初始化返回1,不回调;
* -45040:参数有误,缺失;
* -45041:SDK正在初始化中;
*/
public static int init(Context context, OxRequestParam param, OxNotifier pNotifier) {
......
}

代码示例

OxClientEntry.setDebugMode(true); // 开启debug 日志打印
// https.http请求write/readTimeout,设置不小于3s;
// 调起SDK后整个执行过程的超时时间是timeout的2倍。
/**
* TODO 默认5000 ms.单个请求也可在oxRequestParam 中设置'OxRequestParam.setTimeout(int)'
*/
OxClientEntry.setDefaultTimeout(4000);
JSONObject initParam = new JSONObject();
initParam.put("app_id", APP_ID);
initParam.put("app_secret", APP_SECRET);
OxRequestParam pInitParam = new OxRequestParam();
pInitParam.setActionType(OxActionType.INIT_SDK);
pInitParam.setStrData(initParam.toString());
pInitParam.setExtra(extraData);
return OxClientEntry.init(pInitContext, pInitParam, new MyNotifier());

参数说明

参数名称 参数类型 必填 描述
actionType String -- 响应类型:
OxActionType.INIT_SDK
strData app_id String 官网注册获取的appId
app_secret String 官网注册获取的appSecret
options String 可选参数,JSON 格式
extra Object 自定义参数,不参与请求。

响应信息

参数名称 参数类型 必填 描述
actionType String 响应类型: OxActionType.INIT_SDK
strData code String 响应码 :“00000”成功
risk_code String 风 风险码(可能存在多个),通过账户进行配置才有返回 (V2.3.2新增)
risk_level String 风险等级 (V2.3.2新增)
msg String 响应信息
param OxRequestParam 请求时的对象

返回strData实体示例

{
"code":"00000",
"risk_code":"2013",
"risk_level":"3"
}

3、预取号(可省略-建议使用)

  • 预取号

方法描述

使用预取号后,可快速拉起授权页,需要开发者在 SDK 初始化完成 后 中的预取号操作 , 如果不做 预取号操作 ,直接调用获取 登录 accessToken,会影响每次拉起授权页 的 等待时间。

OxClientEntry.requestAction(OxRequestParam);

代码示例

OxRequestParam param = new OxRequestParam();
param.setActionType(OxActionType.PRE_LOGIN);
int iResult = OxClientEntry.requestAction(param);

参数说明

参数名称 参数类型 必填 描述
actionType String 请求类型:
OxActionType.PRE_LOGIN
strData String -- 格式JSON
extra Object 自定义参数,不参与请求。

响应信息

参数名称 参数类型 必填 描述
actionType String 请求类型: OxActionType.PRE_LOGIN
strData msg String 响应消息
code String 响应码 :“00000”成功
param OxRequestParam 请求对象数据

返回strData实体示例

{
"code":"00000",
"msg":"success"
}

4、拉起授权页

  • 拉起授权页-一键登录

方法描述

即一键登录的主体功能

public static int requestAction(OxRequestParam param) {
......
}

代码示例

OxRequestParam param = new OxRequestParam();
param.setActionType(OxActionType.GET_ONEKEY_LOGIN_TOKEN);
int iResult = OxClientEntry.requestAction(param);

参数说明

参数名称 参数类型 必填 描述
actionType String 请求类型:
OxActionType. GET_ONEKEY_LOGIN_TOKEN
strData String -- 格式JSON
extra Object 自定义参数,不参与请求。

响应信息

参数名称 参数类型 必填 描述
actionType String 请求类型:OxActionType.GET_ONEKEY_LOGIN_TOKEN
strData code string 响应码 :“00000”成功
msg string 响应信息
access_token string 成功是返回access_token,用于从平台服务器获取手机号信息。获取用户信息API请查看服务端API文档。有效期为2分钟,
risk_code string 风 风险码(可能存在多个),通过账户进行配置才有返回 (V2.3.2新增)
risk_level string 风险等级 (V2.3.2新增)
param OxRequestParam 请求对象数据

返回strData实体示例

 {
"access_token":"xx",
"code":"00000",
"risk_code":"2013",
"risk_level":"3"
}

5、关闭授权页

  • 关闭授权页

方法描述

用户完成登录后需手动调用结束授权页的方法

/**
* 主动调用,授权页完成token获取不关闭,需要主动调用此方法结束授权页
*/
public static void finishAuthActivity() {
......
}

代码示例

OxClientEntry.finishAuthActivity();

四、风控说明

v2.3.2 版本新增风控检测等功能,在SDK初始化、本机号校验等公共中会对设备的环境信息进行检测。

1、风控字段说明

参数名称 参数类型 非空 描述
risk_code string false 风险码(可能存在多个),通过账户进行配置才有返回。
risk_level string false 风险等级

2、风险等级说明( risk_level )

等级 说明
0 正常用户
3 风险较低
7 风险较高
9 高风险,确定是风险客户

3、风险返回码说明(risk_code)

风险码 风险等级 风险说明
2011 7 模拟器操作
2012 3 获取到设备最高权限,越狱或者root
2013 3 终端设备上安装有多开工具或者类似多开类应用
2014 7 终端设备处于调试状态
2015 7 安卓端对设备有改机操作或者安装了改机软件

返回strData实体示例

{
......
"risk_code":"2013",
"risk_level":"3",
......
}

五、授权页面UI自定义

1、设计规范

见下图:

注意:红色部分

图片

2、授权页回调(Callbacks)

授权页拉起成功后的授权页回调(Callbacks),类名为OxAuthLoginActivityCallbacks。LoginActivity相关生命周期代理对象到 OxAuthLoginActivityCallbacks抽象类中,开发这可在相关生命周期回调方法中处理授权页面的一些事件。例如,在onLayoutComplete(Activity, View)中绑定自己的视图,在onActivityDestroyed(Activity)方法中处理授权页面关闭后续操作。下面还会简单介绍相关回调方法的用法。

                    
package org.ox.face;
import android.app.Activity;
import android.view.View;
public abstract class OxAuthLoginActivityCallbacks{
/** 授权页UI布局加载完成回调,用户可在此方法中绑定子控件,设置点击事件 */
public abstract void onLayoutCompleted(Activity activity, View view);
/** UI布局加载时的抛出异常信息。注意查看错误日志。*/
public abstract void onLayoutError(String msg, Exception e);
/** 授权页activity created回调*/
public void onActivityCreated(Activity activity) { }
/** 授权页activity started回调 */
public void onActivityStarted(Activity activity) { }
/** activity Resume*/
public void onActivityResumed(Activity activity) { }
/** activity Pause*/
public void onActivityPaused(Activity activity) { }
/** 授权页暂停时调用*/
public void onActivityStopped(Activity activity) { }
/** 授权页面结束后的回调方法*/
public void onActivityDestroyed(Activity activity) { }
/** 登录按钮点击事件回调*/
public void onClickLoginListener() { }
/**
* 执行开始动画效果
*
* @param context 当前活动页面activity上下文
* @return 当设置使用自己的loading动画时return true,默认 false 使用SDK的 loading
*/
public boolean onStartLoginLoading(Activity context) {
return false;
}
/**
* 结束动画效果
*
* @return 当设置使用自己的loading动画时return true
*/
public boolean onStopLoginLoading() {
return false;
}
public boolean oxActionUsersInteract(int type, int value, String url) {
return false;
}
}

3、授权页配置

调用该方法可实现对三网运营商授权页面个性化设计

  • 方法原型
/**
* 设置一键登录授权页面UI 风格配置
*
* @param config Config
*/
public static void setLoginThemeConfig(OxLoginThemeConfig config) {
......
}

参数说明

OxLoginThemeConfig 一键登录授权页面UI 风格配置类 开发者通过配置OxLoginThemeConfig的属性改变UI

代码示例

// 自定义授权页页面UI
OxClientEntry.setLoginThemeConfig(mLoginThemeConfig);

OxLoginThemeConfig 配置元素说明

方法 参数类型 说明
进出场动画
setStartActivityTransition anim 设置拉起授权页的进、出场动画
setFinishActivityTransition anim 设置结束授权页的进、出场动画
导航栏属性设置
setNavText String 设置导航栏标题文字内容,默认 "登录",设置为 null是跟随xml布局中title text内容变化;
setNavColor int-ColorInt 设置导航栏背景颜色。 navColor=-1 是,颜色跟随布局变化 ,默认值 :-1
setNavTextColor int-ColorInt 设置导航栏标题文字颜色。navTextColor=-1 是,颜色跟随布局变化 ,默认值 :-1
setNavReturnImgResId int-DrawableRes 设置导航栏返回按钮背景图片资源id。imgResId=-1 是,背景图片跟随布局变化 ,默认值 :-1
Logo图片设置
setLogoImgResId int-DrawableRes 设置导航栏返回按钮背景图片资源id。默认值:-1
setLogoFrames int,int 设置logo 宽高
setLogoHidden boolean 设置logo显示与隐藏,默认false显示
电话号码文字属性设置
setNumberColor int-ColorInt 设置电话号码文字颜色。默认值 :-1
setNumberSize float 号码文本字体大小
Slogan文本属性设置
setSloganTextColor int-ColorInt 设置Slogan文字颜色。默认值-1
setSloganTextSize float 设置slogan文本字体大小
登录按钮属性设置
setLoginBtnText String 设置登录按钮文字。默认值 :"本机号码一键登录"
setLoginBtnTextColor int-ColorInt 设置登录按钮文字颜色。默认值 :-1
setLoginBtnTextSize float 登录按钮字体大小
setLoginBtnBackgroundResId int- DrawableRes 设置登录按钮背景图片资源id。默认值 :-1
条款协议设置
setClauseColor int(基本文字颜色) ,int(条款名称文字颜色) 文字颜色设置
clause String(名称),String(链接) 创建一个新的协议条款对象
setClauseTextFormat String ,Clause列表 clauseTextFormat Format(html/String) 默认:同意?,请仔细阅读
setOperatorTermsPunctuationMarks boolean 设置运营商协议是否有书名号,默认有
setPrivacyTextSize float 设置协议文本字体大小
setCheckBoxButtonResId int- DrawableRes 条款勾选框修改,不设置时跟随布局图片
setPrivacyState boolean 默认不勾选:false;需要勾选请设置为true
setPrivacyCheckBoxHidden boolean 设置协议勾选框显隐
条款协议预览页风格设置
setClausePageBackImgResId int- DrawableRes 设置条款页面返回按钮图片资源id
setClausePageBackImgParams int,int 设置条款页面返回按钮图片宽高
setClausePageBackImgAlignParentLeft boolean 按钮在左边还是右边 默认左边,false时,右边显示
setClausePageNavTextColor int-ColorInt 条款网页页面导航栏文字颜色
setClausePageNavColor int-ColorInt 条款网页页面导航栏背景颜色
状态栏背景颜色设置
setStatusBarColor int( 状态栏背景颜色 ),boolean( true:字体为黑 false:字体为白 ) 设置状态栏背景颜色
授权页背景修改
setAuthBackgroundResId int- DrawableRes 可设置颜色
setAuthBgLandResId int- DrawableRes 设置横屏时的背景
setDialogWindowBgResId int- DrawableRes 设置弹窗模式背景区域背景
未勾选复选框提示信息,位置控制参数
CbToastMessage String 提示内容
CbToastGravity BOTTOM、TOP、CENTER 未勾选协议时的提示信息的位置
CbToastOffsetX int 正值往左 此值必须与CbToastGravity同时使用时才生效
CbToastOffsetY int 正值往上 此值必须与CbToastGravity同时使用时才生效
CbToastDuration int 未勾选协议时的提示时长

4、设置授权页面模式

  • 设置授权页面模式

方法描述

在调用一键登录前,可通过此方法配置授权页面的模式,弹窗获取Activity模式

public void setAuthWindowModel(int authWindowModel);

参数说明

OxLoginThemeConfig.WINDOW_MODEL_DIALOG 弹窗模式
OxLoginThemeConfig.WINDOW_MODEL_ACTIVITY 全屏模式(默认模式)

5、设置弹窗样式

  • 设置弹窗样式

方法描述

可设置弹窗的布局以及style达到自定义的目的

/**
* 从布局资源设置Activity内容。 布局文件中的id要与原默认id相同,
*
* @param layoutResId Resource ID to be inflated.
*/
public void setLoginDialogLayoutResId(@LayoutRes int layoutResId)

注意: 在设置窗口为dialog模式时需要添加activity风格样式,SDK已经提供了这个样式values/umcsdk_styles.xml中umcsdk_dialog_style.

<style name="umcsdk_dialog_style" parent="Theme.AppCompat.Light.NoActionBar">
<!--没有标题-->
<item name="windowNoTitle">true</item>
<!--背景透明-->
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowFrame">@null</item>
<!--dialog的整个屏幕的背景黑色半透明遮障层
false 没有遮障层 true 有半透明黑色遮障层-->
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowAnimationStyle">
@android:style/Animation.Dialog
</item>
</style>

6、设置横竖屏

  • 设置横竖屏

方法描述

SDK针对横竖屏做了自动适配,当旋转屏幕后,会重新加载布局,同时回调 onLayoutComplete(Activity activity, View view) 方法。

此外还可固定页面为横屏或者竖屏,方法有两种:

是在AndroidManifest.xml中对应activity添加screenOrientation属性 portrait竖屏,landscape横屏;
在OxAuthLoginActivityCallbacks 中的public void onActivityCreated(Activity activity)使用代码设置横竖屏,方法如下.

@Override
public void onActivityCreated(Activity activity) {
// 横屏
//activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
// 竖屏
//activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
// 跟随系统
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}

8.0的坑
android 8.0的一个坑Only fullscreen activities can request orientation异常。当Activity清单的style中添加了下面一行代码:

<item name="android:windowIsTranslucent">true</item>

这个段代码会导致8.0手机Activity再使用activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);方法或者xml中添加android:screenOrientation="portrait"属性启动时奔溃。

解决:

1. 如果你需要使用弹窗模式风格,请删除`android:screenOrientation="portrait"`属性,限制打开窗口所在页面横竖屏就行了,如在A界面打开授权窗口(横屏),使用横屏` A.instance.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) ;`,如果你需要在结束授权窗口恢复竖屏请在A中的 ` onResume() `方法中 实现如下代码:
@Override
protected void onResume() {
super.onResume();
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
2. 如果只使用全面模式,那么请删除`android:theme="@style/umcsdk_dialog_style"`,这样就可以使用`android:screenOrientation="portrait"`和在`onLayoutComplete(Activity activity, View view)`方法中使用:
@Override
public void onActivityCreated(Activity activity) {
// 横屏
//activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
// 竖屏
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

7、登录自定义Loading

  • 自定义Loading

方法描述

自定义Loading

/**
* 执行开始动画效果
* @param context 当前活动页面activity上下文
* @return 当设置使用自己的loading动画时return true,默认 false 使用SDK的loading
*/
public boolean onStartLoginLoading(Activity context) {
//TODO 在这里showLoading 对象;
return false;
}
/**
* 结束动画效果
* @return 当设置使用自己的loading动画时return true
*/
public boolean onStopLoginLoading() {
//TODO 在这里dismissLoading 对象;
return false;
}
@Override
public void onActivityCreated(Activity activity) {
//TODO 在这里创建自己的loading对象;
}

六、本机号校验

1、获取本机号token

开发者可以在应用内部任意页面调用本方法,获取本机号码校验接口的凭证(token)

注意:获取 token 接口不要连续频繁调用,需等待上一次调用完成回调后再发起新的调用!须在SDK初始化之后调用

* 获取本机号token

方法描述

获取本机号token

OxClientEntry.requestAction(OxRequestParam requestParam );

参数说明

参数名称 参数类型 非空 描述
actionType String 响应类型: OxActionType.GET_MOBILE_AUTH_TOKEN
strData -- -- --
extra Object 自定义参数,不参与请求。

响应信息

参数名称 参数类型 非空 描述
actionType String 响应类型: OxActionType.GET_MOBILE_AUTH_TOKEN
strData code String 响应码 :“00000”成功
access_token String 成功是返回access_token,用于从SAI服务端本机号校验。
服务端本机号校验API请查看服务端API文档
msg String 响应信息
risk_code String 风 风险码(可能存在多个),通过账户进行配置才有返回 (V2.3.2新增)
risk_level String 风险等级 (V2.3.2新增)
param OxRequestParam 请求时的对象

返回strData实体示例

{
"access_token":"xx",
"code":"00000",
"risk_code":"2013",
"risk_level":"3"
}

七、短信验证码

注意:须在SDK初始化之后调用

短信验证由客户端发起,收到短信验证码后校验短信验证码是否正确。请求发送短信验证,调用此方法,会向传入的手机号对应的手机发送一条短信(调用此接口会消耗验证次数或余额,优先消耗验证次数),短信验证码一分钟内只能发送一次,一分钟内多次调用会导致失败。

1、发送短信验证码

* 请求短信验证码

方法描述

发送短信验证码

OxClientEntry.requestAction(OxRequestParam requestParam );

参数说明

参数名称 参数类型 非空 描述
actionType String 响应类型: OxActionType.VERIFY_BY_SMS_START
strData tel String 请求的手机号
extra Object 自定义参数,不参与请求。

响应信息

参数名称 参数类型 非空 描述
actionType String 响应类型: OxActionType.VERIFY_BY_SMS_START
strData code String 响应码 :“00000”成功
verify_order_id String 平台订单id
msg String 响应信息
param OxRequestParam 请求时的对象

返回strData实体示例

{
"code":"00000",
"verify_order_id":"sms_159xx71b93",
"request_id":"1595839036768"
}

2、校验短信验证码

* 校验短信验证码

方法描述

校验短信验证码

OxClientEntry.requestAction(OxRequestParam requestParam );

参数说明

参数名称 参数类型 非空 描述
actionType String 响应类型: OxActionType. VERIFY_BY_SMS_CHECK
strData tel String 请求的手机号
extra Object 自定义参数,不参与请求。

响应信息

参数名称 参数类型 非空 描述
actionType String 响应类型: OxActionType. VERIFY_BY_SMS_CHECK
strData code String 响应码 :“00000”成功
verify_token String 用于二次验证token
msg String 响应信息
param OxRequestParam 请求时的对象

返回strData实体示例

{
"code":"00000",
"verify_token":"xxx",
"request_id":"1595839217584"
}

八、其他API说明

1、获取SDK当前版本

  • 获取SDK版本号

方法描述:

获取SDK版本号

OxClientEntry.SDK_VERSION

代码示例:

String sdkVersion = OxClientEntry.SDK_VERSION;

2、设置调试模式

  • 设置调试模式

方法描述:

设置调试模式

/**
* 设置调试模式。
* (注:该接口需在init接口之前调用,避免出现部分日志没打印的情况。开发时建议设置为true)
*
* @param isDebug 是否为debug模式
*/
public static void setDebugMode(boolean isDebug) {
......
}

代码示例:

OxClientEntry.setDebugMode(true);

3、设置请求超时时间

  • 设置请求超时时间

方法描述:

请求超时时间

/**
* 设置默认的请求超时时间,当单个请求没有设置超时时使用这个超时时间。
*
* @param timeout ms ,默认3000 ms
*/
public static void setDefaultTimeout(int timeout) {
......
}

代码示例:

OxClientEntry.setDefaultTimeout(5000);

3、获取网络类型

注意:须在SDK初始化之后调用

  • 获取网络类型

方法描述:

获取网络类型

/**
* 需要权限:READ_PHONE_STATE, ACCESS_NETWORK_STATE
* operatorType 获取网络运营商 1.移动流量 2.电信流量网络 3.联通流量网络
* networkType 网络状态:0未知;1流量 2 wifi;3 数据流量+wifi
*/
public static String getNetworkType() {
......
}

代码示例:

String netType = OxClientEntry.getNetworkType();

4、获取 设备风控信息

注意:须在SDK初始化之后调用

  • 获取设备风控信息

方法描述:

获取设备风控信息

/**
* 获取设备环境信息-风控检测
* debugging // 是否处于调试状态
* multiple_app_on // 是否安装多开软件
* root // 是否root
* simulator // 是否是模拟器
* change_machine_software // 是否有改机操作
*
* @return JSONObject
*/
public static JSONObject getLocalDevEnv() {
......
}

代码示例:

JSONObject devInfo = OxClientEntry.getLocalDevEnv();

5、注销SDK

  • 注销SDK

方法描述:

注销SDK

/**
* 注销SDK的方法
*/
public static void deinit() {
......
}

代码示例:

OxClientEntry.deinit();

九、API一览

下表提供本产品所有的API功能表格,便于查询

public static int init(Context context, OxRequestParam param, OxNotifier pNotifier) 初始化SDK OxNotifier 是所有请求的回调入口
public static void deinit() 注销SDK
public static JSONObject getLocalDevEnv() 获取设备风控信息 v2.3.2新增
public static String getNetworkType() 获取网络类型
public static void setDefaultTimeout(int timeout) 设置请求超时时间
public static void setDebugMode(boolean isDebug) 设置调试模式
OxClientEntry.SDK_VERSION 获取SDK版本号
public static int requestAction(OxRequestParam param) 所有的请求入口 见下表
public static void setLoginThemeConfig(OxLoginThemeConfig config) 设置一键登录UI
public static OxLoginThemeConfig getLoginThemeConfig() 获取一键登录页面配置对象
public static void setAuthLoginActivityCallback(OxAuthLoginActivityCallbacks activityCallback) 设置授权页代理回调对象
public static void finishAuthActivity() 结束授权页
public static void setCheckBoxStatus(boolean status) 设置协议框勾选状态(2.3.3新增)

本产品的事件类型:

public static final String INIT_SDK SDK初始化
public static final String VERIFY_BY_SMS_START 短信验证获取验证码
public static final String VERIFY_BY_SMS_CHECK 短信校验
public static final String PRE_LOGIN 一键登录获取token/预登录
public static final String GET_ONEKEY_LOGIN_TOKEN 一键登录获取token
public static final String GET_MOBILE_AUTH_TOKEN 本机号检验获取token

十、附录

1、错误码

点击查看错误码列表

2、常见问题

常见问题FAQ