Account Kit
介绍
本示例展示了使用Account Kit提供的登录、授权头像昵称、实时验证手机号、收货地址、发票抬头、未成年人模式的能力。
本示例模拟了在应用里,调用一键登录Button组件拉起符合华为规范的登录页面;调用获取头像昵称接口获取头像昵称,调用实时验证手机号接口拉起实时验证页面,调用收货地址接口获取收货地址,调用发票抬头接口获取发票抬头,调用未成年人模式接口开启或关闭未成年人模式。
需要使用Account Kit接口 @kit.AccountKit。
效果预览
本示例工程的配置与使用
在DevEco中配置本示例工程的步骤如下
- [创建项目]及[应用]。
- 在[华为开发者联盟]为应用配置权限(权限名:realTimePhone、quickLoginMobilePhone),具体操作可参考[Account Kit开发指南]。
- 应用调用收货地址API前,需完成对应的权限申请,当前可通过accountkit@huawei.com进行邮件申请。
请提供如下信息进行申请,我们会在15个工作日内回复申请结果,请您留意邮箱信息。
邮箱主题:【获取收货地址】权限申请
邮件正文:***
企业名称:***
企业包名:com..
APP ID: 112
Client ID:114
使用场景:*** - 打开本示例应用,使用[AppGallery Connect]配置的应用包名替换app.json5文件中的bundleName属性值。
- 使用[AppGallery Connect]配置的应用Client ID替换module.json5文件中的client_id属性值。
- 生成SHA256应用签名证书指纹并添加到[AppGallery Connect]对应的应用配置中,证书指纹生成请参考应用开发准备中的[添加公钥指纹]章节。
本示例工程使用说明
- 运行该本示例应用,依次点击“登录/注册”和“华为账号一键登录”按钮进行登录,如果系统账号未登录,会拉起应用其他登录方式。
- 如系统已登录注册地为中国大陆且已绑定手机号的华为账号,应用在申请完“华为账号一键登录”权限后,点击“登录/注册”按钮,会拉起嵌有“华为账号一键登录”按钮的登录页面,否则拉起其他登录方式,其他登录方式仅为演示,实际并未登录成功。
- 登录成功后,在应用首页点击“亲爱的用户”会进入个人信息页面,如果头像昵称未授权,点击亲爱的用户或默认头像会拉起头像昵称授权页面,授权成功后会在个人信息页展示华为账号头像昵称。个人信息页面的头像、昵称仅用于展示,不可点击修改。
- 申请realTimePhone权限后,在个人信息页点击
180******00
,会拉起手机号验证及授权页面,授权成功后展示默认的匿名化手机号180******00
(本示例只获取code,获取code后需要将code传给应用服务器,调用华为账号服务器接口换取Access Token,然后再[获取用户手机号], 如未申请权限则点击无效。 - 申请获取收货地址API权限后,在个人信息页点击收货地址拉起选择收货地址页面,用户选择对应的地址后展示收货地址信息。
- 应用首次启动时,会调用getMinorsProtectionInfoSync接口,查询未成年人模式的开启状态,如果查询到系统未成年人模式已开启,则应用弹出“未成年人模式已开启”提示,如果查询到系统未成年人模式未开启,不弹出提示。当前应用启动后会订阅未成年人模式开启/关闭事件,当感知到系统未成年人模式开启/关闭时,则应用未成年人模式按钮状态会跟随系统未成年人模式状态进行切换。
- 本示例除了未成年人模式接口,其他所有数据使用的是缓存数据,未做数据持久化,开发者只需在主页面手势返回到系统桌面或者后台清理该应用进程,重新打开应用,即可重新体验账号登录等相关功能。
- 在个人信息页点击发票抬头拉起选择发票抬头页面,用户选择对应的抬头后展示发票抬头信息。
- 在个人信息页,点击未成年人模式按钮,引导用户开启或关闭未成年人模式,未成年人模式开启时,可用时长限制按钮默认为开启状态,用户可以点击可用时长限制按钮,关闭时长限制,当可用时长限制为关闭状态时,用户也可点击可用时长限制按钮开启时长限制。
具体实现
调用一键登录组件拉起符合华为规范的登录页面,功能在QuickLoginButton中,参考QuickLoginButton.ets:
- 使用loginComponentManager.PrivacyText创建QuickLoginButton组件隐私文本对象privacyText
- 使用loginComponentManager.LoginWithHuaweiIDButtonController构造QuickLoginButton组件的控制器对象controller
- 创建一键登录组件对象将privacyText、controller等作为参数传入,拉起登录界面
- 使用setAgreementStatus方法设置用户是否同意协议,通过该状态判断是否需要拉起协议弹窗
- 使用continueLogin方法设置同意协议与登录一同完成,同意协议后直接触发登录的异步回调,用户无需再次点击登录按钮
- 通过LoginWithHuaweiIDButton组件内设置param中的extraStyle属性开启一键登录按钮的点击加载态
调用获取头像昵称授权接口拉起授权页面,参考PersonalInfo.ets:
- 使用authentication.HuaweiIDProvider().createAuthorizationWithHuaweiIDRequest()创建授权请求,完成头像昵称参数设置
- 使用authentication.AuthenticationController(getContext(this))创建controller
- 调用controller.executeRequest()执行请求
在PersonalInfo中调用实时验证手机号接口完成手机号实时验证与授权,参考PersonalInfo.ets:
- 使用authentication.HuaweiIDProvider().createAuthorizationWithHuaweiIDRequest()创建授权请求,完成实时验证手机号参数设置
- 使用authentication.AuthenticationController(getContext(this))创建controller
- 调用controller.executeRequest()执行请求
在PersonalInfo中调用收货地址接口获取收货地址信息,参考PersonalInfo.ets:
- 使用shippingAddress.chooseAddress获取AddressInfo对象
- 从AddressInfo对象中获取收货人姓名、电话、地址信息
使用HomePage作为Navigation容器进行页面承载,参考HomePage.ets:
MainPage作为应用首页调用未成年人模式接口,参考MainPage.ets:
- 使用PersistentStorage和AppStorage存储和获取到当前应用是否开启未成年人模式的状态位。
- 调用minorsProtection.getMinorsProtectionInfoSync()函数,从minorsProtection.MinorsProtectionInfo对象中获取未成年人模式的开启状态。
在PersonalInfo中调用发票抬头接口获取发票抬头信息,参考PersonalInfo.ets:
- 使用invoiceAssistant.selectInvoiceTitle获取InvoiceTitle对象
- 从InvoiceTitle对象中获取发票抬头名称、税号等信息
在PersonalInfo中调用未成年人模式相关接口设置未成年人模式,参考PersonalInfo.ets:
- 使用minorsProtection.leadToTurnOnMinorsMode引导用户开启未成年人模式。
- 使用minorsProtection.leadToTurnOffMinorsMode引导用户关闭未成年人模式。
- 使用minorsProtection.verifyMinorsProtectionCredential校验用户开启未成年人模式的密码。
在CommonUtil监听未成年状态变化,参考在CommonUtil.ets:
- 使用@ohos.commonEventManager系统能力监听COMMON_EVENT_MINORSMODE_ON和COMMON_EVENT_MINORSMODE_OFF事件。
在OtherLoginModel页面中自定义用户的其他登录方式:
- 比如手机号验证码、密码等
在ProtocolWebView页面中使用Web组件显示《华为账号用户认证协议》内容:
- 在data.json中获取网页链接,当前仅支持中英文
在AgreementDialog中实现用户隐私协议的弹窗组件
- 通过自定义CustomDialogController控制弹窗的显隐
在ErrorCodeEntity中定义通用的实体数据信息
- 比如通用错误码、通用常量等
以上就是本篇文章所带来的鸿蒙开发中一小部分技术讲解;想要学习完整的鸿蒙全栈技术。可以在结尾找我可全部拿到!
下面是鸿蒙的完整学习路线,展示如下:
除此之外,根据这个学习鸿蒙全栈学习路线,也附带一整套完整的学习【文档+视频】,内容包含如下:
内容包含了:(ArkTS、ArkUI、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、鸿蒙南向开发、鸿蒙项目实战)等技术知识点。帮助大家在学习鸿蒙路上快速成长!
鸿蒙【北向应用开发+南向系统层开发】文档
鸿蒙【基础+实战项目】视频
鸿蒙面经
为了避免大家在学习过程中产生更多的时间成本,对比我把以上内容全部放在了↓↓↓想要的可以自拿喔!谢谢大家观看!