鸿蒙号码认证

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

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

    获取配置信息

    通过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, '--'))
    

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

    通过p7b文件获取
    • 打开p7b文件

    image-20240912170535943

    • name(包名)搜索bundle-name
    • appIdentifier(标识符)搜索app-identifier
    • fingerprint(签名)搜索development-certificate,将对应的内容拷贝出来复制到新的文本中,需要去掉换行,并保存为.cer文件,通过keytool -printcert file xxx.cer获取sha256值,需要去掉冒号

    image-20240912171113647

    添加依赖

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

    image-20240723180641234

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

    image-20240723180724387

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

    权限配置

    • 在相应的模块目录下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'
    
    • 初始化,建议在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 的时间取得临时凭证,不要和拉取授权页方法一起串行调用。建议放在放在调用一键登录的AbilityonCreate方法中
    • 不要频繁的多次调用
    • 预取号受到网络和运营商的相关影响,若频繁失败建议做好降级方案,例如降级为短信登录等。

    方法原型

    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信息,请联系技术支持
    在线咨询 电话咨询:95163223 免费试用