• 商务咨询电话

    • 北京:18201535397
    • 申报信息

    • 请购买成功的客户正确填写信息采集表
    • 添加商务微信

一键登录接入指南

一、概述与资源

本产品 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置换号(如下)

img1

二、集成开发

1SDK资源包内容

·       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.xmlactivity_oauth_ctc.xml,不可缺v2.3.0新增;注AndroidXsupport包的区别

·       assets: uniaccount_classez.jar 联通认classes资源包,不可缺v2.2.0新增;

·       assets:cucc/host_cucc.properties,增加联通通道,不可缺v2.3.0新增;

2Android Studio集成

.        *.jar 拷贝到工程libs目录下,如没有该目录,可新建。

.       sdk所需要的资源文(anim, drawable, drawable-xxhdpi, layout, values)demo res-umc 目录下的文件添加到项目工程中。

.        jniLibs 拷贝到工程main目录下。

.       uniaccount_classez.jar cucc/host_cucc.properties添加 assets 目录下,如没有该目录,可main目录下新建。

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

img2

.       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')

 

}

.       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切换至蜂窝数据

.       配置授权登activity

开发者根据需要配置横竖屏方向 android:screenOrientation 示列代码 portrait()
注意 v2.3.0版本新OauthActivityOauthActivityCtc,需要添加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" />

.       Android 9.0Http的支持  目前移动取号部分接口暂未支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"

.       添加混淆配置

 

# 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执行,结果回调 以下几种请情况直接返回,不回 

 

* 1SDK已经初始化完成,无需多次初始化返1,不回;

 

* -45040:参数有误,缺失 

 

* -45041SDK正在初始化中 

 

*/

 

public static int init(Context context, OxRequestParam param, OxNotifier pNotifier) {

 

......

 

}

代码示例

 

OxClientEntry.setDebugMode(true); // debug 日志打 

 

// https.httpwrite/readTimeout,设置不小3s;

 

// SDK后整个执行过程的超时时间timeout2 

 

/**

 

* 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、关闭授权页

·       关闭授权页

方法描述

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

发布时间:2023-12-29
首页    服务与支持    一键登录接入指南

相关阅读