鸿蒙号码认证
2024.09.24 10:44:39
直连三大运营商,一步校验手机号与当前 SIM 卡号一致性。优化注册/登录/支付等场景验证流程,有效提升拉新转化率和用户留存率
业务场景介绍
业务场景 | 说明 |
---|---|
一键登录 | 用户无需输入手机号码,通过 SDK 拉起授权页,用户确认授权后,SDK 会获取 token,服务端携带 token 到运营商网关获取用户当前上网使用的流量卡号码,并返回给 APP 服务端 |
本机校验 | 用户输入手机号码,服务端携带手机号码和 token 去运营商网关进行校验比对,返回的校验结果是用户当前流量卡号码与服务端携带的手机号码是否一致 |
兼容性
条目 | 说明 |
---|---|
适配版本 | SDK版本为1.0.3及以下,适配情况如下 IDE版本:beta1(5.0.3.403及以上) 手机rom版本:API12(3.0.0.25及以上) SDK版本为2.0.1及以上,适配情况如下 IDE版本:beta5(5.0.3.700及以上) 手机rom版本:API12(NEXT.0.0.36及以上) |
环境准备
条目 | 说明 |
---|---|
网络制式 | 支持移动2G/3G/4G/5G 联通3G/4G/5G 电信4G/5G 2G、3G因网络环境问题,成功率低于4G |
网络环境 | 蜂窝网络 蜂窝网络+WIFI同开 双卡手机,取当前发流量的卡号 |
资源引入
获取 SDK
- 登录账号,从易盾官网控制台下载鸿蒙号码认证SDK
获取配置信息
通过API获取
- 将下述方法打印的应用信息中的
name(包名)
、fingerprint(签名)
、appIdentifier(标识符)
,发给易盾方,进行产品报备,获取业务Id
let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_SIGNATURE_INFO;
let data = bundleManager.getBundleInfoForSelfSync(bundleFlags);
console.info('data', JSON.stringify(data, null, '--'))
通过p7b文件获取
- 打开p7b文件
name(包名)
搜索bundle-name
appIdentifier(标识符)
搜索app-identifier
fingerprint(签名)
搜索development-certificate
,将对应的内容拷贝出来复制到新的文本中,需要去掉换行,并保存为.cer
文件,通过keytool -printcert file xxx.cer
获取sha256值,需要去掉冒号
添加依赖
- 将下载的鸿蒙号码认证SDK拖入工程目录下
- 修改工程级目录下的构建配置文件
build-profile,json5
,设置配置项useNormalizedOHMUrl
为true,指定工程使用标准化的OHMUrl格式
- 进入依赖号码认证的模块目录下,执行
ohpm install ../libs/ntes_quick_login_har-signed_v2.0.1.har
,具体路径根据项目实际路径进行填写,成功后,可在模块目录下oh-package.json5
看到对应依赖
权限配置
- 在相应的模块目录下
module.json5
设置
{
"module": {
// other...
"requestPermissions": [
{
"name": "ohos.permission.INTERNET",
// other...
},
{
"name": "ohos.permission.GET_NETWORK_INFO",
// other...
},
{
"name": "ohos.permission.SET_NETWORK_INFO",
// other...
}
]
}
}
- 权限说明
权限 | 说明 |
---|---|
INTERNET | 允许应用程序联网,用于访问网关和认证服务器 |
GET_NETWORK_INFO | 获取网络状态,判断是否数据、wifi等 |
SET_NETWORK_INFO | 允许应用配置数据网络 |
快速调用示例
一键登录
- 导入
import {
NTESQuickLogin,
NTESQuickLoginPreMobileListener,
NTESQuickLoginTokenListener
} from 'ntes_login_harmony_static'
- 初始化,建议在
Ability
的OnCreate
中调用
NTESQuickLogin.getInstance().init("your businessId", this.context);
- 调用
NTESQuickLogin.getInstance().prefetchMobileNumber(new NTESQuickLoginHandler())
// 预取号回调实现
class NTESQuickLoginHandler implements NTESQuickLoginPreMobileListener {
onGetMobileNumberSuccess(ydToken: string, mobileNumer: string): void {
// 拉起授权页
NTESQuickLogin.getInstance().onePass(new NTESQuickLoginTokenHandler());
console.log('yidun quick login ydToken: ' + ydToken + ', mobileNumer: ' + mobileNumer)
}
onGetMobileNumberError(ydToken: string, code: number, msg: string): void {
console.log('yidun quick login ydToken: ' + ydToken + ', code: ' + code + ', msg: ' + msg)
}
}
// 授权页回调
class NTESQuickLoginTokenHandler implements NTESQuickLoginTokenListener {
onShowAuthorizationPage(): void {
console.log('yidun quick login show...');
}
onHideAuthorizationPage(): void {
console.log('yidun quick login hide...');
}
onGetTokenSuccess(ydToken: string, accessToken: string): void {
NTESQuickLogin.getInstance().quitActivity()
console.log('yidun quick login ydToken: ' + ydToken + ', accessToken: ' + accessToken)
}
onGetTokenError(ydToken: string, code: number, msg: string): void {
console.log('yidun quick login ydToken: ' + ydToken + ', code: ' + code + ', msg: ' + msg)
}
}
本机校验
- 导入
import {
NTESQuickLogin,
NTESQuickLoginVerifyListener
} from 'ntes_login_harmony_static'
- 初始化,建议在
Ability
的OnCreate
中调用
NTESQuickLogin.getInstance().init("your businessId", this.context);
- 调用
NTESQuickLogin.getInstance().verifyPhoneNumber("your phone number", new NTESVerifyMobileNumberTest("your phone number"))
// 号码认证回调实现
class NTESVerifyMobileNumberTest implements NTESQuickLoginVerifyListener {
phone: string
// 可以通过构造函数传入手机号
constructor(phone: string) {
this.phone = phone
}
onGetTokenSuccess(ydToken: string, accessToken: string): void {
// check接口校验
console.log('yidun verify ydToken: ' + ydToken + ', accessToken: ' + accessToken)
}
onGetTokenError(ydToken: string, code: number, msg: string): void {
console.log('yidun verify ydToken: ' + ydToken + ', code: ' + code + ', msg: ' + msg)
}
}
Demo
更多使用场景请参考demo工程
SDK 方法说明
1. 初始化
使用拉取授权页功能前必须先进行初始化操作,建议放在调用一键登录的Ability
的onCreate
方法中
方法原型
public init(business: string, context: Context)
参数说明
参数 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
businessId | string | 是 | 无 | 号码认证业务 id |
context | Context | 是 | 无 | 上下文 |
调用示例
NTESQuickLogin.getInstance().init("your businessId", this.context)
2. 预取号
注意事项
- 用户处于未授权状态时,调用该方法
- 已授权的用户退出当前帐号时,调用该方法
- 在执行拉取授权页的方法之前,提前调用此方法,以提升用户前端体验
- 此方法需要 1~2s 的时间取得临时凭证,不要和拉取授权页方法一起串行调用。建议放在放在调用一键登录的
Ability
的onCreate
方法中 - 不要频繁的多次调用
- 预取号受到网络和运营商的相关影响,若频繁失败建议做好降级方案,例如降级为短信登录等。
方法原型
public prefetchMobileNumber(handler: NTESQuickLoginPreMobileListener)
参数说明
参数 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
handler | NTESQuickLoginPreMobileListener | 是 | 无 | 预取号回调 |
NTESQuickLoginPreMobileListener 接口说明
export interface NTESQuickLoginPreMobileListener {
/**
* 预取号成功
* @param ydToken 易盾token
* @param mobileNumer 手机号掩码
*/
onGetMobileNumberSuccess(ydToken: string, mobileNumer: string): void
/**
* 预取号失败
* @param ydToken 易盾token
* @param code 错误码
* @param msg 手机号掩码
*/
onGetMobileNumberError(ydToken: string, code: number, msg: string): void
}
调用示例
NTESQuickLogin.getInstance().prefetchMobileNumber(new NTESQuickLoginHandler())
// 回调实现
class NTESQuickLoginHandler implements NTESQuickLoginPreMobileListener {
onGetMobileNumberSuccess(ydToken: string, mobileNumer: string): void {
console.log('yidun quick login ydToken: ' + ydToken + ', mobileNumer: ' + mobileNumer)
}
onGetMobileNumberError(ydToken: string, code: number, msg: string): void {
console.log('yidun quick login ydToken: ' + ydToken + ', code: ' + code + ', msg: ' + msg)
}
}
3. 拉取授权页
注意事项
- 调用拉取授权页方法后将会调起运营商授权页面,已登录状态下请勿调用
- 如果有自定义UI配置,需要在调用拉取授权页方法前,先调用授权页配置方法
setUnifyUiConfig
- 1 秒之内只能调用一次,必须保证上一次拉起的授权页已经销毁再调用,否则 SDK 会返回请求频繁
- 注意:点击确认按钮后,才会响应相应token逻辑调用
方法原型
public onePass(handler: NTESQuickLoginTokenListener)
参数说明
参数 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
listener | NTESQuickLoginTokenListener | 是 | 无 | 拉取授权页回调 |
NTESQuickLoginTokenListener 接口说明
export interface NTESQuickLoginTokenListener {
/**
* 获取运营商授权码成功
* @param ydToken 易盾token
* @param accessToken 运营商授权码
*/
onGetTokenSuccess(ydToken: string, accessToken: string): void
/**
* 获取运营商授权码失败
* @param ydToken 易盾token
* @param code 错误码
* @param msg 错误信息
*/
onGetTokenError(ydToken: string, code: number, msg: string): void
/**
* 展示授权页回调
*/
onShowAuthorizationPage(): void
/**
* 隐藏授权页回调
*/
onHideAuthorizationPage(): void
}
调用示例
NTESQuickLogin.getInstance().onePass(new NTESQuickLoginTokenHandler());
// 回调实现
class NTESQuickLoginTokenHandler implements NTESQuickLoginTokenListener {
onShowAuthorizationPage(): void {
console.log('yidun quick login show...');
}
onHideAuthorizationPage(): void {
console.log('yidun quick login hide...');
}
onGetTokenSuccess(ydToken: string, accessToken: string): void {
console.log('yidun quick login ydToken: ' + ydToken + ', accessToken: ' + accessToken)
}
onGetTokenError(ydToken: string, code: number, msg: string): void {
console.log('yidun quick login ydToken: ' + ydToken + ', code: ' + code + ', msg: ' + msg)
}
}
4. 退出授权页
注意事项
- 授权页拉起后,需要在合适的地方调用该方法,主动退出授权页
方法原型
public quitActivity()
调用示例
NTESQuickLogin.getInstance().quitActivity()
5. 设置授权页自定义配置
设计规范
开发者不得通过任何技术手段,将授权页面的隐私栏、手机掩码号、供应商品牌内容隐藏、覆盖网易易盾与运营商会对应用授权页面进行审查,若发现上述违规行为,网易易盾有权将您的一键登录功能下线
注意事项
- 调用该方法可实现对三网运营商授权页面个性化设计,每次调起拉取授权页方法前必须先调用该方法,否则授权界面会显示异常
- 三网界面配置内部实现逻辑不同,请务必使用移动、电信、联通卡分别测试三网界面
方法原型
public setUnifyUiConfig(uiConfig: NTESQuickLoginUnifyUiConfig)
参数说明
参数 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
uiConfig | NTESQuickLoginUnifyUiConfig | 是 | 无 | 自定义配置 |
NTESQuickLoginUnifyUiConfig 可配置元素说明
注意
- 以下所有 API 接口中涉及到图标,样式等资源名称的形参,均表示资源名,且该资源需要放置在 resources 目录下
可配置元素自定义类型说明
NTESQuickLoginPopUpType
- 弹框枚举
枚举 | 说明 |
---|---|
NTESQuickLoginPopUpType.FULL | 全屏 |
NTESQuickLoginPopUpType.CENTER | 中间弹出 |
NTESQuickLoginPopUpType.BOTTOM | 底部弹出 |
NTESQuickLoginSize
- 通用的尺寸类
属性 | 类型 | 说明 |
---|---|---|
width | Length | 宽度 |
height | Length | 高度 |
NTESQuickLoginTextCustomSpan
- 文本类,针对隐私政策和隐私政策交互栏的文字部分
属性 | 类型 | 说明 |
---|---|---|
type | NTESQuickLoginTextCustomSpanType | 文本类型 |
content | string | Resource | 文本内容 |
url | string | Resource | 文本类型为超链接时有效,跳转URL |
fontSize | Length | 文本字体大小 默认值为 14 |
fontWeight | number | FontWeight | string | 文本字体粗细 默认值为 FontWeight.Normal |
fontFamily | string | Resource | 文本字体 默认值为 "" |
fontColor | ResourceColor | 文本字体颜色 默认值为 Color.Black |
- 若需要自定义文本内容,如
登陆即同意《中国联通认证服务协议》和《网易易盾隐私政策》。
,请通过NTESQuickLoginTextCustomSpan
数组设置相应配置,代码如下
let privacyTextSpans: NTESQuickLoginTextCustomSpan[] =
[new NTESQuickLoginTextCustomSpan(NTESQuickLoginTextCustomSpanType.Normal, "登陆即同意"),
new NTESQuickLoginTextCustomSpan(NTESQuickLoginTextCustomSpanType.UrlLink,
"《中国联通认证服务协议》", "privacy url"),
new NTESQuickLoginTextCustomSpan(NTESQuickLoginTextCustomSpanType.Normal, "和"),
new NTESQuickLoginTextCustomSpan(NTESQuickLoginTextCustomSpanType.UrlLink,
"《网易易盾隐私政策》", "privacy url"),
// 运营商隐私政策占位
new NTESQuickLoginTextCustomSpan(NTESQuickLoginTextCustomSpanType.OperatorUrlPlaceholder),
new NTESQuickLoginTextCustomSpan(NTESQuickLoginTextCustomSpanType.Normal, "。")]
NTESQuickLoginTextCustomSpanType
- 文本枚举
枚举 | 说明 |
---|---|
NTESQuickLoginTextCustomSpanType.Normal | 普通文本 |
NTESQuickLoginTextCustomSpanType.UrlLink | 超链接 |
NTESQuickLoginTextCustomSpanType.OperatorUrlPlaceholder | 运营商隐私政策占位,可以修改运营商隐私政策位置 |
NTESQuickLoginRenderConfig
- 授权页元素枚举
枚举 | 说明 |
---|---|
NTESQuickLoginRenderConfig.ICON | 中间logo图片 |
NTESQuickLoginRenderConfig.PHONE | 手机号 |
NTESQuickLoginRenderConfig.OPERATOR | 运营商信息 |
NTESQuickLoginRenderConfig.LOGIN | 登陆按键 |
NTESQuickLoginRenderConfig.OTHERLOGIN | 其他登陆按键 |
NTESQuickLoginRenderConfig.BLANK | 空白占位 |
NTESQuickLoginRenderConfig.PRIVACY | 隐私政策 |
- 使用示例,配合config中的renderOrderConfig进行设置
config.renderOrderConfig =
[NTESQuickLoginRenderConfig.OPERATOR, NTESQuickLoginRenderConfig.PHONE, NTESQuickLoginRenderConfig.LOGIN,
NTESQuickLoginRenderConfig.BLANK, NTESQuickLoginRenderConfig.PRIVACY]
弹窗模式
属性 | 类型 | 说明 |
---|---|---|
popUpType | NTESQuickLoginPopUpType | 默认值:NTESQuickLoginPopUpType.FULL,全屏弹出 竖屏时,支持全屏、中间弹出、底部弹出 横屏时,仅支持全屏和中间弹出,即设置为底部弹出,在横屏后,会以中间弹出 |
背景和边框样式
属性 | 类型 | 说明 |
---|---|---|
popUpPageSize | NTESQuickLoginSize | 全屏弹出时设置无效 中间弹出时,默认值为 ('90%', '50%') 底部弹出时,默认值为 ('100%', '50%') |
horizontalPopUpPageSize | NTESQuickLoginSize | 中间弹出时,横屏弹框尺寸,默认值为 ('50%', '90%') |
backgroundColor | ResourceColor | 背景颜色 默认值为 Color.White |
backgroundBorderRadiuses | Length | BorderRadiuses | 背景圆角半径,全屏弹出时设置无效 默认值为 0 |
backgroundImage | ResourceStr | PixelMap | 背景图片 默认值为空 |
backgroundImageRepeat | ImageRepeat | 背景图重复样式 默认值为空 |
backgroundImageSize | SizeOptions | ImageSize | 背景图宽高,填充样式 默认值为空 |
backgroundImagePosition | Position | Alignment | 背景图位置 默认值为空 |
backgroundVideo | string | Resource | 背景视频 默认值为空 |
backgroundVideoHide | boolean | 背景视频隐藏 默认值为 true,在设置背景视频,需要设置为false |
backgroundVideoMutex | boolean | 背景视频静音 默认值为 true |
backgroundVideoLoop | boolean | 背景视频循环 默认值为 true |
backgroundVideoAutoPlay | boolean | 背景视频自动播放 默认值为 true |
backgroundVideoControls | boolean | 背景视频是否显示视频控制器 默认值为 false |
backgroundVideoObjectFit | ImageFit | 背景视频填充方式 默认值为 ImageFit.Cover |
backgroundHalfModalMaskHideAbility | boolean | 半屏弹出时,背景蒙板关闭能力 默认值为 false |
backgroundMaskColor | ResourceColor | 半屏弹出时,背景蒙板颜色 默认值为 Color.White |
backgroundMaskOpacity | number |Resource | 半屏弹出时,背景蒙板透明度 默认值为 1 |
renderOrderConfig | NTESQuickLoginRenderConfig[] | 授权控件渲染元素和顺序设置 默认值为全部出现,可根据实际情况进行调整,但必须包含PHONE、OPERATOR、LOGIN、PRIVACY否则弹出失败 |
关闭按钮 Logo
- 仅在中间弹出时有效
属性 | 类型 | 说明 |
---|---|---|
closeImgHide | boolean | 是否隐藏关闭按钮 默认值为 false |
closeImgName | Resource | 关闭按钮图片资源 默认值为 $r("app.media.ico_close") |
closeImgSize | NTESQuickLoginSize | 关闭按钮大小 默认值为 (25, 25) |
closeImgMargin | Margin | Length | 关闭按钮靠左Margin 默认值为 { top: 10, right: 15 } |
导航栏
- 全屏弹出时有效
属性 | 类型 | 说明 |
---|---|---|
fullModalTopTimeBarColor | ResourceColor | 全屏弹出时,时间栏颜色 默认值为 Color.White |
fullModalTopTimeBarHeight | Length | 全屏弹出时,时间栏高度 默认值为 30 |
fullModalBackImgName | Resource | 全屏弹出时,导航栏返回键按钮图片 默认值为 $r("sys.media.ohos_ic_compnent_titlebar_back") |
fullModalBackImgSize | NTESQuickLoginSize | 全屏弹出时,导航栏返回键按钮大小 默认值为 (40, 40) |
fullModalBackImgColor | ResourceColor | 全屏弹出时,导航栏返回键按钮填充颜色 默认值为 Color.Black |
fullModalTitle | string | Resource | 全屏弹出时,导航栏标题文本 默认值为 "免密登录" |
fullModalTitleFontSize | number | string |Resource | 全屏弹出时,导航栏标题字体大小 默认值为 24 |
fullModalTitleFontColor | ResourceColor | 全屏弹出时,导航栏标题字体颜色 默认值为 Color.Black |
fullModalNavTitleFontWeight | number |FontWeight |string | 全屏弹出时,导航栏标题字体粗细 默认值为 FontWeight.Normal |
fullModalNavTitleFontFamily | string |Resource | 全屏弹出时,导航栏标题字体 默认值为 "" |
fullModalNavHeight | Length | 全屏弹出时,导航栏高度 默认值为 50 |
fullModalNavBackgroundColor | ResourceColor | 全屏弹出时,导航栏背景颜色 默认值为 Color.White |
fullModalNavHide | boolean | 全屏弹出时,导航栏是否隐藏 默认值为 false |
fullModalBackImgMargin | Margin | Length | 全屏弹出时,返回键Margin 默认值为 0 |
应用 Logo
属性 | 类型 | 说明 |
---|---|---|
iconImgName | Resource | 应用Logo图片资源 默认值为 $r("app.media.ico_logo") |
iconImgSize | NTESQuickLoginSize | 应用Logo图片大小 默认值为 (60, 60) |
iconImgHide | boolean | 是否隐藏应用Logo 默认值为 false |
iconImgMargin | Margin | Length | 应用Logo Margin,仅在全屏弹出和底部弹出时有效 默认值为 { top: 10 } |
centerModalIconImgMargin | Margin | Length | 应用Logo Margin,仅在中间弹出时有效 默认值为 0,即会空出closeImg的距离 |
手机掩码
属性 | 类型 | 说明 |
---|---|---|
mobileNumberFontSize | Length | 手机掩码字体大小 默认值为 20 |
mobileNumberFontColor | ResourceColor | 手机掩码字体颜色 默认值为 Color.Black |
mobileNumberMargin | Margin | Length | 手机掩码Margin 默认值为 { top: 5 } |
mobileNumberFontWeight | number | FontWeight | string | 手机掩码字体粗细 默认值为 FontWeight.Normal |
mobildNumberFontFamily | string | Resource | 手机掩码字体 默认值为 "" |
认证品牌
属性 | 类型 | 说明 |
---|---|---|
operatorBrandFontSize | Length | 认证品牌字体大小 默认值为 14 |
operatorBrandFontColor | ResourceColor | 认证品牌字体颜色 默认值为 Color.Gray |
operatorBrandMargin | Margin | Length | 认证品牌Margin 默认值为{ top: 2 } |
operatorBrandFontWeight | number | FontWeight | string | 认证品牌字体粗细 默认值为 FontWeight.Normal |
operatorBrandFontFamily | string | Resource | 认证品牌字体 默认值为 "" |
登录按钮
属性 | 类型 | 说明 |
---|---|---|
loginBtnContent | string | Resource | 登陆按钮内容 默认值为 "确认登陆" |
loginBtnBackgroundColor | ResourceColor | 登陆按钮颜色 默认值为 '#324DFF' |
loginBtnSize | NTESQuickLoginSize | 登陆按钮大小 默认值为 ('70%', 40) |
loginBtnBorderRadiuses | Length | BorderRadiuses | 登陆按钮圆角半径 默认值为 10 |
loginBtnType | ButtonType | 登陆按钮类型 默认值为 ButtonType.Normal |
loginBtnFontSize | Length | 登陆按钮字体大小 默认值为 16 |
loginBtnFontColor | ResourceColor | 登陆按钮字体颜色 默认值为 Color.White |
loginBtnFontWeight | number | FontWeight | string | 登陆按钮字体粗细 默认值为 FontWeight.Normal |
loginBtnFontFamily | string | Resource | 登陆按钮字体 默认值为 "" |
loginBtnMargin | Margin | Length | 登陆按钮Margin 默认值为{ top: 20 } |
loginBtnBackgroundImage | ResourceStr | PixelMap | 登陆按钮背景图片 默认值为空 |
loginBtnBackgroundImageRepeat | ImageRepeat | 登陆按钮背景图重复样式 默认值为空 |
loginBtnBackgroundImageSize | SizeOptions | ImageSize | 登陆按钮背景图宽高,填充样式 默认值为空 |
loginBtnBackgroundImagePosition | Position | Alignment | 登陆按钮背景图位置 默认值为空 |
其他登录方式按钮
属性 | 类型 | 说明 |
---|---|---|
otherLoginBtnHide | boolean | 其他登录方式按钮是否隐藏 默认值为 true |
otherLoginBtnContent | string | Resource | 其他登录方式按钮内容 默认值为 "其他登录方式" |
otherLoginBtnBackgroundColor | ResourceColor | 其他登录方式按钮颜色 默认值为 Color.Transparent |
otherLoginBtnSize | NTESQuickLoginSize | 其他登录方式按钮大小 默认值为 ('70%', 40) |
otherLoginBtnBorderRadiuses | Length | BorderRadiuses | 其他登录方式按钮圆角半径 默认值为 0 |
otherLoginBtnType | ButtonType | 其他登录方式按钮类型 默认值为 ButtonType.Normal |
otherLoginBtnFontSize | Length | 其他登录方式按钮字体大小 默认值为 16 |
otherLoginBtnFontColor | ResourceColor | 其他登录方式按钮字体颜色 默认值为 Color.Blue |
otherLoginBtnFontWeight | number | FontWeight | string | 其他登录方式按钮字体粗细 默认值为 FontWeight.Normal |
otherLoginBtnFontFamily | string | Resource | 其他登录方式按钮字体 默认值为 "" |
otherLoginBtnMargin | Margin | Length | 其他登录方式按钮Margin 默认值为{ top: 5 } |
otherLoginBtnCallBack | () => void | 其他登录方式按钮执行方法 默认值为 为空 可以通过自定义方法,进行以下处理,如 1. 自定义弹框 2. 路由跳转 3. ability跳转 详见demo |
otherLoginBtnBackgroundImage | ResourceStr | PixelMap | 其他登录方式按钮背景图片 默认值为空 |
otherLoginBtnBackgroundImageRepeat | ImageRepeat | 其他登录方式按钮背景图重复样式 默认值为空 |
otherLoginBtnBackgroundImageSize | SizeOptions | ImageSize | 其他登录方式按钮背景图宽高,填充样式 默认值为空 |
otherLoginBtnBackgroundImagePosition | Position | Alignment | 其他登录方式按钮背景图位置 默认值为空 |
隐私政策
属性 | 类型 | 说明 |
---|---|---|
checkBoxUnselectedColor | ResourceColor | 复选框未选中颜色 默认值为 Color.Black |
checkBoxSelectedColor | ResourceColor | 复选框选中颜色 默认值为 Color.Blue |
checkBoxShape | CheckBoxShape | 复选框形状 默认值为CheckBoxShape.ROUNDED_SQUARE |
checkBoxMark | MarkStyle | 复选框内部图标样式 默认值为 空 |
checkBoxSize | NTESQuickLoginSize | 复选框大小 默认值为 (15, 15) |
checkBoxMargin | Margin |Length | 复选框Margin 默认值为 { top: 0 } |
privacyTextSpans | NTESQuickLoginTextCustomSpan[] | 隐私政策文本内容 默认值为 "登陆即同意[运营商协议]",如进行自定义设置该值,后面将拼接传入内容 详见demo |
privacyTextNormalContent | string | Resource | 隐私政策默认文本内容 默认值为 "登陆即同意" |
privacyTextNormalFontSize | Length | 隐私政策默认文本字体大小 默认值为 14 |
privacyTextNormalFontColor | ResourceColor | 隐私政策默认文本字体颜色 默认值为 Color.White |
privacyTextNormalFontWeight | number | FontWeight | string | 隐私政策默认文本字体粗细 默认值为 FontWeight.Normal |
privacyTextNormalFontFamily | string | Resource | 隐私政策默认文本字体 默认值为 "" |
privacyTextUrlLinkFontSize | Length | 隐私政策默认超链接文本字体大小 默认值为 14 |
privacyTextUrlLinkFontColor | ResourceColor | 隐私政策默认超链接文本字体颜色 默认值为 Color.Blue |
privacyTextUrlLinkFontWeight | number | FontWeight | string | 隐私政策默认超链接文本字体粗细 默认值为 FontWeight.Normal |
privacyTextUrlLinkFontFamily | string | Resource | 隐私政策默认超链接文本字体 默认值为 "" |
privacyTextMargin | Margin | Length | 隐私政策文本Margin 默认值为 { left: 5, right: 25 } |
privacyRowWidth | Length | 隐私政策宽度 默认值为 '80%' |
privacyVerticalAlign | VerticalAlign | 隐私政策对齐方式 默认值为 VerticalAlign.Top |
privacyRowMargin | Margin | Length | 隐私政策文本和复选框整体Margin 默认值为 { bottom: 20 } |
授权页自定义UI
属性 | 类型 | 说明 |
---|---|---|
customUIBuilder | WrappedBuilder<[]>[] | 授权页自定义UI 根据传入Builder函数,进行UI组件渲染 组件布局建议使用position,否则影响授权页固定组件 详见demo |
// config配置
config.customUIBuilder = [wrapBuilder(MyTestView)]
// 装饰器实现
@Builder
function MyTestView() {
Column() {
Text("我是测试文本")
.fontSize(20)
Button("我是测试按钮")
.fontSize(20)
.onClick(event => {
console.log("测试按钮被点击")
})
.margin({top: 10})
Flex({ justifyContent: FlexAlign.SpaceBetween }) {
Text('1').width('20%').height(50).backgroundColor(0xF5DEB3)
Text('2').width('20%').height(50).backgroundColor(0xD2B48C)
Text('3').width('20%').height(50).backgroundColor(0xF5DEB3)
}
.width('90%')
.padding(10)
.backgroundColor(0xAFEEEE)
.margin({top:5})
}
.width('60%')
.position({top: '50%', left: '20%', right:'20%' })
}
隐私政策交互栏
属性 | 类型 | 说明 |
---|---|---|
privacyDialogTextSpans | NTESQuickLoginTextCustomSpan[] | 隐私政策交互栏文本内容 默认值为 "请您仔细阅读[默认解析隐私政策中设置的隐私政策,用、拼接] , 点击"确认",表示您已经阅读并同意以上协议",如进行自定义设置该值,将保留"请您仔细阅读[运营商协议]",后面将拼接传入内容 详见demo |
privacyDialogTextMargin | Margin |Length | 隐私政策交互栏文本Margin 默认值为 { top: 10, bottom: 10, left: 20, right: 20 } |
privacyDialogCancelBtnContent | string |Resource | 隐私政策交互栏取消按钮文本 默认值为 "取消" |
privacyDialogCancelBtnFontSize | Length | 隐私政策交互栏取消按钮字体大小 默认值为 16 |
privacyDialogCancelBtnFontColor | ResourceColor | 隐私政策交互栏取消按钮字体颜色 默认值为 Color.Red |
privacyDialogCancelBtnFontWeight | number | FontWeight | string | 隐私政策交互栏取消按钮字体粗细 默认值为 FontWeight.Normal |
privacyDialogCancelBtnFontFamily | string | Resource | 隐私政策交互栏取消按钮字体 默认值为 "" |
privacyDialogConfirmBtnContent | string |Resource | 隐私政策交互栏确认按钮文本 默认值为 "确认" |
privacyDialogConfirmBtnFontSize | Length | 隐私政策交互栏确认按钮字体大小 默认值为 16 |
privacyDialogConfirmBtnFontColor | ResourceColor | 隐私政策交互栏确认按钮字体颜色 默认值为 Color.Black |
privacyDialogConfirmBtnFontWeight | number | FontWeight | string | 隐私政策交互栏确认按钮字体粗细 默认值为 FontWeight.Normal |
privacyDialogConfirmBtnFontFamily | string | Resource | 隐私政策交互栏确认按钮字体 默认值为 "" |
privacyDialogBackgroudColor | ResourceColor | 隐私政策交互栏背景颜色 默认值为 Color.White |
privacyDialogBorderRadiuses | Length |BorderRadiuses | 隐私政策交互栏圆角半径 默认值为 5 |
privacyDialogWidth | Length | 隐私政策交互栏宽度 默认值为 '80%' |
horizontalPrivacyDialogWidth | Length | 横屏状态下,隐私政策交互栏宽度 默认值为 '40%' |
privacyDialogTextNormalContent | string | Resource | 隐私政策交互栏默认文本内容 默认值为 "请您仔细阅读" |
privacyDialogTextNormalFontSize | Length | 隐私政策交互栏默认文本字体大小 默认值为 14 |
privacyDialogTextNormalFontColor | ResourceColor | 隐私政策交互栏默认文本字体颜色 默认值为 Color.White |
privacyDialogTextNormalFontWeight | number | FontWeight | string | 隐私政策交互栏默认文本字体粗细 默认值为 FontWeight.Normal |
privacyDialogTextNormalFontFamily | string | Resource | 隐私政策交互栏默认文本字体 默认值为 "" |
privacyDialogTextUrlLinkFontSize | Length | 隐私政策交互栏默认超链接文本字体大小 默认值为 14 |
privacyDialogTextUrlLinkFontColor | ResourceColor | 隐私政策交互栏默认超链接文本字体颜色 默认值为 Color.Blue |
privacyDialogTextUrlLinkFontWeight | number | FontWeight | string | 隐私政策交互栏默认超链接文本字体粗细 默认值为 FontWeight.Normal |
privacyDialogTextUrlLinkFontFamily | string | Resource | 隐私政策交互栏默认超链接文本字体 默认值为 "" |
协议详情 Web 页面导航栏
属性 | 类型 | 说明 |
---|---|---|
webPageBackImgName | Resource | 导航栏返回键按钮图片 默认值为 $r("sys.media.ohos_ic_compnent_titlebar_back") |
webPageBackImgSize | NTESQuickLoginSize | 导航栏返回键按钮大小 默认值为 (40, 40) |
webPageBackImgColor | ResourceColor | 导航栏返回键按钮填充颜色 默认值为 Color.Black |
webPageTitleFontSize | number |string |Resource | 导航栏标题字体大小 默认值为 24 |
webPageTitleFontColor | ResourceColor | 全屏弹出时,导航栏标题字体颜色 默认值为 Color.Black |
webPageNavTitleFontWeight | number |FontWeight |string | 导航栏标题字体粗细 默认值为 FontWeight.Normal |
webPageNavTitleFontFamily | string |Resource | 导航栏标题字体 默认值为 "" |
webPageTopTimeBarColor | ResourceColor | 导航栏背景颜色 默认值为 Color.White |
webPageTopTimeBarHeight | Length | 时间栏高度 默认值为 30 |
webPageNavBackgroundColor | ResourceColor | 导航栏背景颜色 默认值为 Color.White |
webPageNavHeight | Length | 导航栏高度 默认值为 50 |
webPageBackImgMargin | Margin | Length | 全屏弹出时,返回键Margin 默认值为 0 |
6. 判断运营商类型(非必须)
方法原型
public async checkNetWork(): Promise<NTESQuickLoginNetworkType>
返回值说明
类型 | 描述 |
---|---|
Promise<NTESQuickLoginNetworkType> | 1:电信 2:移动 3:联通 4:wifi 5:未知 |
调用示例
NTESQuickLogin.getInstance().checkNetWork().then(type => {
console.log('ydun networktype: ' + type)
}).catch((error: Error) => {
console.log('ydun networktype error: ' + error)
})
7. 设置授权页协议复选框是否选中(授权页拉起之后调用,非必须)
方法原型
public setPrivacyState(isChecked: boolean)
参数说明
参数 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
isChecked | boolean | 是 | 无 | 复选框是否选中 |
调用示例
NTESQuickLogin.getInstance().setPrivacyState(true)
8. 获取授权页协议复选框是否选中(授权页拉起之后调用,非必须)
方法原型
public getPrivacyState(): boolean
返回值说明
类型 | 描述 |
---|---|
boolean | 当前复选框是否选中 |
调用示例
NTESQuickLogin.getInstance().getPrivacyState()
9. 设置全局超时时间(非必须)
注意事项
- 适用于SDK内部所有网络请求的超时时间
方法原型
public setGlobalTimeout(timeout: number)
参数说明
参数 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
timeout | number | 是 | 8 | 单位秒 |
调用示例
NTESQuickLogin.getInstance().setGlobalTimeout(5)
10. 返回 SDK 版本号(非必须)
代码说明
public getSDKVersion(): string
返回值说明
类型 | 描述 |
---|---|
string | 版本号 |
调用示例
NTESQuickLogin.getInstance().getSDKVersion()
11. 设置是否打开日志(方便排查问题,非必须)
方法原型
public setDebugMode(debug: boolean)
参数说明
参数 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
debug | boolean | 是 | 无 |
调用示例
NTESQuickLogin.getInstance().setDebugMode(true)
12. 设置预取号携带额外参数(非必须)
方法原型
public setExtendData(extData: Record<string, string>)
参数说明
参数 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
extData | Record<string, string> | 是 | 无 | 额外参数 |
调用示例
const extData: Record<string, string> = {
"name" : "yidun",
"age" : "27"
}
NTESQuickLogin.getInstance().setExtendData(extData)
13. 清预取号缓存(非必须)
方法原型
public clearScripCache()
调用示例
NTESQuickLogin.getInstance().clearScripCache()
14. 移除自定义view(非必须)
方法原型
public removeCustomView()
调用示例
NTESQuickLogin.getInstance().removeCustomView()
15. 本机校验
方法原型
public verifyPhoneNumber(mobileNumber: string, handler: NTESQuickLoginVerifyListener)
参数说明
参数 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
handler | NTESQuickLoginVerifyListener | 是 | 无 | 号码认证回调 |
NTESQuickLoginVerifyListener 接口说明
export interface NTESQuickLoginVerifyListener {
/**
* 获取运营商授权码成功
* @param ydToken 易盾token
* @param accessCode 运营商授权码
*/
onGetTokenSuccess(ydToken: string, accessCode: string): void
/**
* 获取运营商授权码失败
* @param ydToken 易盾token
* @param code 错误码
* @param msg 错误信息
*/
onGetTokenError(ydToken: string, code: number, msg: string): void
}
调用示例
NTESQuickLogin.getInstance().verifyPhoneNumber("mobileNumer", new TestQuickLoginVerifyListener())
// 回调实现
class TestQuickLoginVerifyListener implements NTESQuickLoginVerifyListener {
onGetTokenSuccess(ydToken: string, accessCode: string): void {
console.log('yidun verify ydToken:' + ydToken + ', accessCode: ' + accessCode)
}
onGetTokenError(ydToken: string, code: number, msg: string): void {
console.log('yidun verify ydToken: ' + ydToken + ', code: ' + code + ', msg: ' + msg)
}
}
16. 判断是否可以进行一键登录(非必须)
方法原型
public async shouldQuickLogin(): Promise<boolean>
返回值说明
类型 | 描述 |
---|---|
Promise |
true: 符合一键登录调用网络情况 false: 不符合一键登录调用网络情况 |
调用示例
NTESQuickLogin.getInstance().shouldQuickLogin().then(ret => {
console.log('ydun should quick login: ' + ret)
}).catch((error: Error) => {
console.log('ydun should quick login: ' + error)
})
常见报错
code | message | 说明 |
---|---|---|
-1001 | 预请求过程中捕获的错误信息,msg为具体的error信息 | |
-1002 | 缓存处理捕获的错误信息,msg为具体的error信息 | |
-1003 | 网络类型处理捕获的错误信息,msg为具体的error信息 | |
-1004 | Parameter error, please check the incoming parameters! | API调用参数错 |
-1016 | Parameter error, please check the incoming parameters! | 预取号流程中,参数错误 |
-1017 | Operator type error! | 预取号流程中,运营商类型错误 |
-1018 | YiDun ResultCode: | 预取号流程中,易盾服务器返回错误码,后面拼接具体错误码 |
-1019 | Network type error! | 预取号流程中,当前网络类型非蜂窝类型 |
-1021 | UI configuration error! | 拉起授权页流程中,UI配置错误 |
-1022 | Parameter error, please check the incoming parameters! | 拉起授权页流程中,参数错误 |
-1023 | Operator type error! | 拉起授权页流程中,运营商类型错误 |
-1032 | Parameter error, please check the incoming parameters! | 号码认证流程中,参数错误 |
-1033 | Operator type error! | 号码认证流程中,运营商类型错误 |
-1034 | 号码认证流程中,调用运营商API捕获的错误信息,msg为具体的error信息 | |
-1037 | Network type error! | 号码认证流程中,当前网络类型非蜂窝类型 |
-1038 | YiDun ResultCode: | 号码认证流程中,易盾服务器返回错误码,后面拼接具体错误码 |
-1039 | Mobile phone number operator and network operator are inconsistent! | 号码认证流程中,手机号运营商和当前网络类型不一致 |
-2001 | 预取号流程中,联通捕获的错误信息,msg为具体的error信息 | |
-2002 | China Unicom ResultCode: | 预取号流程中,联通错误码,后面拼接具体错误码 |
-2003 | China Unicom result data is empyt! | 预取号流程中,联通返回结果为空 |
-2004 | China Unicom mobile number, accessToken or ydToken is empty! | 预取号流程中,联通返回结果解析手机掩码或者授权码为空 |
-2006 | China Unicom mobile number, accessToken or ydToken is empty! | 拉起授权页流程中,联通处理过程中易盾Token或者授权码为空 |
-2007 | 号码认证流程中,联通捕获的错误信息,msg为具体的error信息 | |
-2008 | China Unicom ResultCode: | 号码认证流程中,联通错误码,后面拼接具体错误码 |
-2009 | China Unicom result data is empyt! | 号码认证流程中,联通返回结果为空 |
-2010 | China Unicom mobile number, accessToken or ydToken is empty! | 号码认证流程中,联通返回结果解析手机掩码或者授权码为空 |
-2020 | China Unicom encrypted accessToken is empty! | 获取accessToken过程中,联通加密后数据为空 |
-2021 | 获取accessToken过程中,联通加密数据错误,msg为具体的error信息 | |
-3001 | 预取号流程中,电信捕获的错误信息,msg为具体的error信息 | |
-3002 | China Telecom ResultCode: | 预取号流程中,电信错误码,后面拼接具体错误码 |
-3004 | China Telecom mobile mobile number, accessToken or ydToken is empty! | 预取号流程中,电信返回结果解析手机掩码或者授权码为空 |
-3006 | China Telecom mobile mobile number, accessToken or ydToken is empty! | 拉起授权页流程中,电信处理过程中易盾Token或者授权码为空 |
-3007 | 号码认证流程中,电信捕获的错误信息,msg为具体的error信息 | |
-3008 | 号码认证流程中,电信错误码,后面拼接具体错误码 | |
-3009 | China Telecom mobile mobile number, accessToken or ydToken is empty! | 号码认证流程中,电信解析的结果为空 |
-3010 | China Telecom verify data is empty! | 号码认证流程中,获取电信的请求结果为空 |
-3011 | China Telecom verify parse url error! | 号码认证流程中,解析电信的URL错误 |
-3012 | China Telecom verify response error! | 号码认证流程中,电信的响应错误 |
-3013 | China Telecom verify network type error! | 号码认证流程中,电信的网络类型错误 |
-3020 | China Telecom encrypted accessToken is empty! | 获取accessToken过程中,电信加密后数据为空 |
-3021 | 获取accessToken过程中,电信加密数据错误,msg为具体的error信息 | |
-4001 | 预取号流程中,移动捕获的错误信息,msg为具体的error信息 | |
-4002 | China Mobile ResultCode: | 预取号流程中,移动错误码,后面拼接具体错误码 |
-4004 | China Mobile mobile number, accessToken or ydToken is empty! | 预取号流程中,移动返回结果解析手机掩码或者授权码为空 |
-4005 | China Mobile OnePass ResultCode: | 拉起授权页流程中,移动错误码,后面拼接具体错误码 |
-4006 | China Mobile mobile number, accessToken or ydToken is empty! | 拉起授权页流程中,移动处理过程中易盾Token或者授权码为空 |
-4007 | 拉起授权页流程中,移动捕获的错误信息,msg为具体的error信息 | |
-4008 | 号码认证流程中,移动捕获的错误信息,msg为具体的error信息 | |
-4009 | China Mobile ResultCode: | 号码认证流程中,移动错误码,后面拼接具体错误码 |
-4010 | China Mobile mobile number, accessToken or ydToken is empty! | 号码认证过程中,移动授权码为空 |
-4011 | China Mobile onepass handle error! | 拉起授权页流程中,移动处理过程出错,请联系技术支持 |
-4012 | China Mobile onepass handle error! | 拉起授权页流程中,移动处理过程出错,请联系技术支持 |
-4020 | China Mobile encrypted accessToken is empty! | 获取accessToken过程中,移动加密后数据为空 |
-4021 | 获取accessToken过程中,移动加密数据错误,msg为具体的error信息 | |
-5001 | msg为具体的error信息,请联系技术支持 | |
-5002 | msg为具体的error信息,请联系技术支持 | |
-5003 | msg为具体的error信息,请联系技术支持 | |
-5004 | msg为具体的error信息,请联系技术支持 | |
-5005 | msg为具体的error信息,请联系技术支持 | |
-5006 | msg为具体的error信息,请联系技术支持 | |