1.1 SDK信息:
SDK名称:天翼账号认证SDK
最新版本:4.5.6
功能介绍:自动识别本机号码,实现一键登录
开发者:天翼数字生活科技有限公司
为了确保用户在登录过程中将手机号码信息授权给合作方使用的知情权,天翼账号登录认证需要合作方满足如下要求:
(1)合作方在调用登录认证方法前,必须显示出登录页面,登录页面需明确告知用户操作会将用户本机号码信息授权给应用;(天翼账号服务与隐私协议url地址:https://e.189.cn/sdk/agreement/detail.do?hidetop=true)
(2)合作方需展示“天翼账号”品牌露出,不得通过任何技术手段,将登录页面的隐私栏、品牌露出内容隐藏、覆盖;
若有出现未按要求设计登录页面的行为或有非正常调用行为,为了保护用户的隐私安全,我方有权将合作方应用的登录功能下线,由此产生的一切影响由合作方自己承担。
如下是天翼账号标准页面的设计规范,供合作方参考;
(3)建议合作方首次APP运行时,应当有隐私弹窗。隐私弹窗中应公示简版隐私政策内容并附完整版隐私政策链接,并明确提示最终用户阅读并选择是否同意隐私政策;隐私弹窗应提供同意按钮和拒绝同意的按钮,并由最终用户主动选择。如涉及敏感个人信息, 应当取得您最终用户的单独授权同意,您可通过单独弹窗的形式来实现,并由最终用户主动选择。如涉及敏感个人信息, 应当取得您最终用户的单独授权同意,您可以通过单独弹窗的形式来实现最终用户的授权,并在您的《隐私政策》中针对敏感个人信息通过字体加粗或其他显著标识显示。
隐私政策授权弹窗示例:
(4)隐私保护机制
如果您对天翼账号认证SDK权限有任何疑问、意见和建议,可通过以下联系方式与我们联系:
电子邮箱:id@189.cn
联系电话:4008-281-189
在线客服:【访问网站e.189.cn->点击页面底部“在线客服”】
(5)为满足以上要求,接入资料中未包含相应的导入包,需合作方将如下信息在开放平台上进行配置,我方即可提供导入包:
1)一个APPID对应一个应用,故需要提供如下信息,用于校验该APPID对应的应用请求:
Android端:APPID、包名packagename、包签名(签名证书的MD5值)
iOS端:APPID、bundleID(可配置测试和正式的bundleID)
HarmonyOS端:APPID、bundleName(可配置测试和正式的bundleName)
2)SDK 个人信息收集频次说明
我们根据业务功能实现之最小必要进行用户个人信息的收集,业务方每次调用SDK预登录接口将收集一次个人信息(关于频次 APP 开发者不可自行配置,故我们对频次不对外提供可选择的配置方式),已对接过的合作方请留意错误码的改动,以防影响正常使用逻辑。
基本功能:自动识别本机号码,实现一键登录。
扩展功能【电信版】【可选】:为了实现双因子登录功能,即同时使用手机号与生物识别技术共同登录的功能。
个人信息类字段采集信息/权限情况【行业版本不涉及拓展业务功能(指纹/人脸生物识别认证)】:
功能分类 |
相关个人信息 |
采集目的及功能场景 |
处理方式 |
配置方式 |
基本业务功能 |
【必选】注册手机号码、本机号码、网络连接类型、网络状态信息、网络地址、运营商类型、手机设备类型、手机设备厂商、手机操作系统类型及版本。 |
通过网络信息完成用户号码登录认证; 通过设备信息,用于确保在不同设备上的兼容性与业务风控。 |
通过去标识化、加密传输和处理的安全处理方式 |
基本业务,均为必选信息,不可选配置个人信息 |
拓展业务功能 |
【电信版】【可选】指纹信息/人脸信息 |
为了实现双因子登录功能,即同时使用手机号与生物识别技术共同登录的功能,若不提供则无法进行指纹/人脸登录 |
通过去标识化、加密传输和处理的安全处理方式,人脸/指纹信息在登录后不会进行存储,会将相关信息进行删除/匿名化。 |
安卓配置方式: ctAuth.setBiometricEnnabled(true); //开启增强免密登录 ctAuth.setBiometricEnnabled(false); //关闭增强免密登录 |
功能分类 |
系统 |
所需对应权限 |
调用权限目的 |
是否可选 |
基本业务功能 |
安卓 |
INTERNET |
允许sdk进行联网 |
必选 |
基本业务功能 |
安卓 |
CHANGE_NETWORK_STATE |
运行sdk改变网络连接状态 |
必选 |
基本业务功能 |
安卓 |
ACCESS_WIFI_STATE |
允许sdk访问wifi网络状态信息 |
必选 |
基本业务功能 |
安卓 |
ACCESS_NETWORK_STATE |
允许sdk访问联网状态,区分用户设备时蜂窝网络或者是wifi网络 |
必选 |
基本业务功能 |
安卓 |
GET_TASKS |
在打开免密页面时,sdk获取堆栈信息判断当前最顶层页面activity是否被覆盖,以提升认证安全。 |
必选 |
基本业务功能 |
鸿蒙 |
ohos.permission.INTERNET |
允许应用程序联网 |
必选 |
基本业务功能 |
鸿蒙 |
ohos.permission.GET_NETWORK_INFO |
允许程序访问网络状态信息 |
必选 |
【电信版】拓展业务功能 |
安卓 |
USE_FINGERPRINT/CAMERA(生物识别权限/摄像头权限) |
为了实现双因子登录功能,即同时使用手机号与生物识别技术共同登录的功能,我们需要收集您的生物识别(指纹/人脸)结果进行安全校验。 |
电信内部企业可选 |
【电信版】拓展业务功能 |
安卓 |
WRITE_EXTERNAL_STORAGE(外部存储权限) |
为了实现设备锁登录功能,即在新的机器中登录需要双重认证的功能,我们需要使用您在设备存储卡(外部存储权限)保存天翼账号和设备的绑定信息、允许读写系统设置项。 |
电信内部企业可选 |
安卓在AndroidManifest.xml所需配置权限【行业版本不涉及拓展业务功能(指纹/人脸生物识别认证),无需配置权限】:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_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.GET_TASKS" />
1)初始化SDK(行业版、电信版本必要调用)
【接口说明】
在使用天翼账号SDK接口之前,必须先调用初始化方法(提前1s以上最佳),建议在Application或Activity的onCreate()调用。不建议初始化与预登录接口同时调用。
【调用示例】
CtAuth.getInstance().init(context, APPID , APPSECRET, false);
2)预登录接口(行业版、电信版本必要调用)
【接口说明】
在调用该接口前,建议先做本地预判断处理,符合条件再调用预登录接口。预登录接口可获取脱敏手机号、accessCode、gwAuth等信息,其中脱敏手机号可用于登录界面的展示,accessCode默认有效期为60分钟。(备注:旧方法名requestPreCode已废弃,请使用新方法名requestPreLogin)
SDK提供两个预判断方法:
1)判断移动数据网络是否开启
CtAuth.getInstance().isMobileDataEnabled();
返回:
true:表示已开启移动数据网(支持预登录)
false:表示未开启移动数据网(不支持预登录)
2)判断当前运营商类型
CtAuth.getInstance().getOperatorType();
返回:
"CT":电信 , "CM":移动 , "CU":联通 ,"UN":未知
【调用示例】
CtAuth.getInstance().requestPreLogin (null ,new ResultListener() {
@Override
public void onResult(String result) {
Log.i(TAG, "requestPreLogin ---> result : " + result);
}
});
"requestPermissions":[
{
"name": "ohos.permission.INTERNET",
},
{
"name": "ohos.permission.GET_NETWORK_INFO"
}
(2)鸿蒙配置权限说明
权限 |
用途 |
ohos.permission.INTERNET |
允许应用程序联网 |
ohos.permission.GET_NETWORK_INFO |
允许程序访问网络状态信息 |
1.5.1鸿蒙SDK接口调用说明
(1)初始化SDK
在调用该接口前,需先做SDK初始化,调用后再调用预取号
【调用示例】
onWindowStageCreate(windowStage: window.WindowStage): void {
BusinessAuth.init(getContext(this), "xxx", "xxx")
}
(2)预取号接口
【接口说明】
在调用该接口前,建议先做本地预判断处理,符合条件再调用预登录接口。预登录接口可获取脱敏手机号、accessCode等信息,其中脱敏手机号可用于登录界面的展示,accessCode默认有效期为60分钟。
【调用示例】
import { BusinessAuth,AuthResultListener,AuthResult,CtSetting } from 'ctaccount'
CtAuth.glet setting: CtSetting = new CtSetting()
setting.setConnTimeout(6000)
setting.setReadTimeout(6000)
BusinessAuth.requestPreLogin(setting, new AuthResultAdapter())
// 创建一个AuthResultListener的实现类
class AuthResultAdapter implements AuthResultListener {
onResult(result: AuthResult): void {
if (result != null) {
const code: string = result.code;
const accessCode: string = result.accessCode;
const msg: string = result.msg;
const expiredTime: string = result.expiredTime;
const operatorType: string = result.operatorType;
const number: string = result.number;
const reqID: string = result.reqID;
console.log("DebugLog:" + 'code:' + code + '&msg:' + msg + '&accessCode:' + accessCode + "&expiredTime:" +
expiredTime + "&number:" + number + "&operatorType:" + operatorType)
AlertDialog.show(
{
title: '提示',
message: 'code:' + code + '&msg:' + msg + '&accessCode:' + accessCode + "&expiredTime:" +
expiredTime + "&number:" + number + "&operatorType:" + operatorType + "&reqID:" + reqID,
autoCancel: true,
alignment: DialogAlignment.Center,
gridCount: 3,
confirm: {
value: '确认',
action: () => {
}
}
}
)
}
}
}
此接口实现了一键同时校验指纹及免密登录的功能
【权限配置】
1)在文件AndroidManifest.xml的<application>外(可以紧贴此上面)添加以下权限(以demo为准,可复制demo内配置):
<!-- 增强免密认证必选权限 -->
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>
2)权限说明
权限 |
用途 |
USE_FINGERPRINT |
允许进行指纹识别 |
USE_CAMERA |
允许使用相机 |
【示例代码】
ctAuth.setBiometricEnnabled(true); //开启增强免密登录
ctAuth.setBiometricEnnabled(false); //关闭增强免密登录
SDK非必要外部存储权限,若应用本身没有使用该权限,则不需要调用。
权限说明
权限 |
用途 |
WRITE_EXTERNAL_STORAGE |
实现设备锁登录功能,即在新的机器中登录需要双重认证的功能 |