鸿蒙号码认证

2024.08.15 17:06:44

    直连三大运营商,一步校验手机号与当前 SIM 卡号一致性。优化注册/登录/支付等场景验证流程,有效提升拉新转化率和用户留存率

    业务场景介绍

    业务场景 说明
    一键登录 用户无需输入手机号码,通过 SDK 拉起授权页,用户确认授权后,SDK 会获取 token,服务端携带 token 到运营商网关获取用户当前上网使用的流量卡号码,并返回给 APP 服务端
    本机校验 用户输入手机号码,服务端携带手机号码和 token 去运营商网关进行校验比对,返回的校验结果是用户当前流量卡号码与服务端携带的手机号码是否一致

    兼容性

    条目 说明
    适配版本 IDE版本:5.0.3.403及以上

    手机rom版本:API12(3.0.0.25及以上)

    环境准备

    条目 说明
    网络制式 支持移动2G/3G/4G/5G
    联通3G/4G/5G
    电信4G/5G
    2G、3G因网络环境问题,成功率低于4G
    网络环境 蜂窝网络
    蜂窝网络+WIFI同开
    双卡手机,取当前发流量的卡号

    资源引入

    获取 SDK

    • 登录账号,从易盾官网控制台下载鸿蒙号码认证SDKimage title

    获取配置信息

    • 将下述方法打印的应用信息中的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, '--'))
    

    {c176804d-2ace-436c-b7b6-b5d95cc1da9b}

    添加依赖

    • 将下载的鸿蒙号码认证SDK拖入工程目录下

    image-20240723180641234

    • 修改工程级目录下的构建配置文件build-profile,json5,设置配置项useNormalizedOHMUrl为true,指定工程使用标准化的OHMUrl格式

    image-20240723180724387

    • 进入依赖号码认证的模块目录下,执行ohpm install ../libs/ntes_quick_login_hsp-default.tgz ,具体路径根据项目实际路径进行填写,成功后,可在模块目录下oh-package.json5看到对应依赖

    image-20240723180804890

    权限配置

    • 在相应的模块目录下module.json5设置
    {
      "module": {
        // other...
        "requestPermissions": [
          {
            "name": "ohos.permission.INTERNET",
            // other...
          },
          {
            "name": "ohos.permission.GET_NETWORK_INFO",
            // other...
          }
        ]
      }
    }
    
    • 权限说明
    权限 说明
    INTERNET 允许应用程序联网,用于访问网关和认证服务器
    GET_NETWORK_INFO 获取网络状态,判断是否数据、wifi等

    快速调用示例

    一键登录

    • 导入
    import {
      NTESQuickLogin,
      NTESQuickLoginPreMobileListener,
      NTESQuickLoginTokenListener
    } from 'ntes_login_harmony_static'
    
    • 初始化,建议在AbilityOnCreate中调用
    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'
    
    • 初始化,建议在AbilityOnCreate中调用
    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. 初始化

    使用拉取授权页功能前必须先进行初始化操作,建议放在调用一键登录的AbilityonCreate方法中

    方法原型

    public init(business: string, context: Context)
    

    参数说明

    参数 类型 是否必填 默认值 描述
    businessId string 号码认证业务 id
    context Context 上下文

    调用示例

    NTESQuickLogin.getInstance().init("your businessId", this.context)
    

    2. 预取号

    注意事项

    • 用户处于未授权状态时,调用该方法
    • 已授权的用户退出当前帐号时,调用该方法
    • 在执行拉取授权页的方法之前,提前调用此方法,以提升用户前端体验
    • 此方法需要 1~2s 的时间取得临时凭证,不要和拉取授权页方法一起串行调用。建议放在启动页的 onCreate() 方法中或者 Application 的 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.Normal, "。")]
    
    NTESQuickLoginTextCustomSpanType
    • 文本枚举
    枚举 说明
    NTESQuickLoginTextCustomSpanType.Normal 普通文本
    NTESQuickLoginTextCustomSpanType.UrlLink 超链接
    弹窗模式
    属性 类型 说明
    popUpType NTESQuickLoginPopUpType 默认值:NTESQuickLoginPopUpType.FULL,全屏弹出

    竖屏时,支持全屏、中间弹出、底部弹出

    横屏时,仅支持全屏和中间弹出,即设置为底部弹出,在横屏后,会以中间弹出
    背景和边框样式
    属性 类型 说明
    popUpPageSize NTESQuickLoginSize 全屏弹出时设置无效

    中间弹出时,默认值为 ('90%', '50%')

    底部弹出时,默认值为 ('100%', '50%')
    horizontalPopUpPageSize NTESQuickLoginSize 中间弹出时,横屏弹框尺寸,默认值为 ('50%', '90%')
    backgroundColor ResourceColor 背景颜色,全屏弹出时设置无效

    默认值为 Color.White
    backgroundBorderRadiuses Length | BorderRadiuses 背景圆角半径,全屏弹出时设置无效

    默认值为 0
    关闭按钮 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
    应用 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 }
    其他登录方式按钮
    属性 类型 说明
    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
    隐私政策
    属性 类型 说明
    checkBoxUnselectedColor ResourceColor 复选框未选中颜色

    默认值为 Color.Black
    checkBoxSelectedColor ResourceColor 复选框选中颜色

    默认值为 Color.Blue
    chechBoxShape CheckBoxShape 复选框形状

    默认值为CheckBoxShape.ROUNDED_SQUARE
    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: 20 }
    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

    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)
      }
    
    }
    

    常见报错

    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! 号码认证过程中,移动授权码为空
    -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信息,请联系技术支持
    在线咨询 电话咨询:95163223 免费试用