[HarmonyOS Next示例代码]Account Kit

Accountkit-Samplecode-Clientdemo-ArkTS: 本示例基于HarmonyOS实现了华为帐号服务提供的登录、获取头像昵称、实时验证手机号等功能。

HarmonyOS next 示例代码全集

Account Kit

介绍

本示例展示了使用Account Kit提供的登录、授权头像昵称、实时验证手机号、收货地址、发票抬头、未成年人模式的能力。

本示例模拟了在应用里,调用一键登录Button组件拉起符合华为规范的登录页面;调用获取头像昵称接口获取头像昵称,调用实时验证手机号接口拉起实时验证页面,调用收货地址接口获取收货地址,调用发票抬头接口获取发票抬头,调用未成年人模式接口开启或关闭未成年人模式。

需要使用Account Kit接口 @kit.AccountKit

效果预览

登录/注册页面用户登录后首页用户个人信息页面

avatar

avatar

avatar

一键登录组件登录页面头像昵称授权页面获取实时验证手机号页面

avatar

avatar

avatar

一键登录组件弹窗页面获取收货地址页面应用其他登录页

avatar

avatar

avatar

本示例工程的配置与使用

在DevEco中配置本示例工程的步骤如下

  1. 创建项目应用
  2. 华为开发者联盟为应用配置权限(权限名:realTimePhone、quickLoginMobilePhone),具体操作可参考Account Kit开发指南
  3. 应用调用收货地址API前,需完成对应的权限申请,当前可通过accountkit@huawei.com进行邮件申请。
    请提供如下信息进行申请,我们会在15个工作日内回复申请结果,请您留意邮箱信息。
    邮箱主题:【获取收货地址】权限申请
    邮件正文:***
    企业名称:***
    企业包名:com.***.***
    APP ID: 1****12
    Client ID:1****14
    使用场景:***
  4. 打开本示例应用,使用AppGallery Connect配置的应用包名替换app.json5文件中的bundleName属性值。
  5. 使用AppGallery Connect配置的应用Client ID替换module.json5文件中的client_id属性值。
  6. 生成SHA256应用签名证书指纹并添加到AppGallery Connect对应的应用配置中,证书指纹生成请参考应用开发准备中的添加公钥指纹章节。
本示例工程使用说明
  1. 运行该本示例应用,依次点击“登录/注册”和“华为账号一键登录”按钮进行登录,如果系统账号未登录,会拉起应用其他登录方式。
  2. 如系统已登录注册地为中国大陆且已绑定手机号的华为账号,应用在申请完“华为账号一键登录”权限后,点击“登录/注册”按钮,会拉起嵌有“华为账号一键登录”按钮的登录页面,否则拉起其他登录方式,其他登录方式仅为演示,实际并未登录成功。
  3. 登录成功后,在应用首页点击“亲爱的用户”会进入个人信息页面,如果头像昵称未授权,点击亲爱的用户或默认头像会拉起头像昵称授权页面,授权成功后会在个人信息页展示华为账号头像昵称。个人信息页面的头像、昵称仅用于展示,不可点击修改。
  4. 申请realTimePhone权限后,在个人信息页点击180******00,会拉起手机号验证及授权页面,授权成功后展示默认的匿名化手机号180******00 (本示例只获取code,获取code后需要将code传给应用服务器,调用华为账号服务器接口换取Access Token,然后再获取用户手机号), 如未申请权限则点击无效。
  5. 申请获取收货地址API权限后,在个人信息页点击收货地址拉起选择收货地址页面,用户选择对应的地址后展示收货地址信息。
  6. 应用首次启动时,会调用getMinorsProtectionInfoSync接口,查询未成年人模式的开启状态,如果查询到系统未成年人模式已开启,则应用弹出“未成年人模式已开启”提示,如果查询到系统未成年人模式未开启,不弹出提示。当前应用启动后会订阅未成年人模式开启/关闭事件,当感知到系统未成年人模式开启/关闭时,则应用未成年人模式按钮状态会跟随系统未成年人模式状态进行切换。
  7. 本示例除了未成年人模式接口,其他所有数据使用的是缓存数据,未做数据持久化,开发者只需在主页面手势返回到系统桌面或者后台清理该应用进程,重新打开应用,即可重新体验账号登录等相关功能。
  8. 在个人信息页点击发票抬头拉起选择发票抬头页面,用户选择对应的抬头后展示发票抬头信息。
  9. 在个人信息页,点击未成年人模式按钮,引导用户开启或关闭未成年人模式,未成年人模式开启时,可用时长限制按钮默认为开启状态,用户可以点击可用时长限制按钮,关闭时长限制,当可用时长限制为关闭状态时,用户也可点击可用时长限制按钮开启时长限制。

工程目录

├─entry/src/main/ets // 代码区
│ ├─commonUtil
│ │ └─CommonUtil.ets // 公共类,包含监听未成年人状态变化的事件
│ ├─entryability
│ │ └─EntryAbility.ets // 程序入口类
│ ├─pages // 存放页面文件目录
│ │ └─HomePage.ets // 主页面,作为Navigation跳转的容器
│ │ └─MainPage.ets 首页内容,包括获取匿名手机号、未成年人模式的开启状态场景
│ │ └─PersonalInfoPage.ets // 个人信息页,包含头像、昵称、默认手机号展示,同时包含实时验证手机号授权、获取收货地址、设置未成年人模式和获取发票抬头场景
│ │ └─QuickLoginPage.ets // 华为账号一键登录组件,包含组件调用
│ │ └─OtherLoginPage.ets // 应用自定义的其他登录方式
│ │ └─ProtocolWebView.ets // 华为账号用户认证协议页面
│ │ └─AgreementDialog.ets // 用户隐私协议页面弹窗
│ │ └─ErrorCodeEntity.ets // 登录过程中可能遇到的错误码信息页面

具体实现

调用一键登录组件拉起符合华为规范的登录页面,功能在QuickLoginPage中,参考QuickLoginPage.ets:

  • 使用loginComponentManager.PrivacyText创建QuickLoginPage组件隐私文本对象privacyText
  • 使用loginComponentManager.LoginWithHuaweiIDButtonController构造QuickLoginPage组件的控制器对象controller
  • 创建一键登录组件对象将privacyText、controller等作为参数传入,拉起登录界面
  • 使用setAgreementStatus方法设置用户是否同意协议,通过该状态判断是否需要拉起协议弹窗
  • 使用continueLogin方法设置同意协议与登录一同完成,同意协议后直接触发登录的异步回调,用户无需再次点击登录按钮

调用获取头像昵称授权接口拉起授权页面,参考PersonalInfoPage.ets:

  • 使用authentication.HuaweiIDProvider().createAuthorizationWithHuaweiIDRequest()创建授权请求,完成头像昵称参数设置
  • 使用authentication.AuthenticationController(getContext(this))创建controller
  • 调用controller.executeRequest()执行请求

在PersonalInfo中调用实时验证手机号接口完成手机号实时验证与授权,参考PersonalInfoPage.ets:

  • 使用authentication.HuaweiIDProvider().createAuthorizationWithHuaweiIDRequest()创建授权请求,完成实时验证手机号参数设置
  • 使用authentication.AuthenticationController(getContext(this))创建controller
  • 调用controller.executeRequest()执行请求

在PersonalInfo中调用收货地址接口获取收货地址信息,参考PersonalInfoPage.ets:

  • 使用shippingAddress.chooseAddress获取AddressInfo对象
  • 从AddressInfo对象中获取收货人姓名、电话、地址信息

使用HomePage作为Navigation容器进行页面承载,参考HomePage.ets:

MainPage作为应用首页调用未成年人模式接口,参考MainPage.ets:

  • 使用PersistentStorage和AppStorage存储和获取到当前应用是否开启未成年人模式的状态位。
  • 调用minorsProtection.getMinorsProtectionInfoSync()函数,从minorsProtection.MinorsProtectionInfo对象中获取未成年人模式的开启状态。

在PersonalInfo中调用发票抬头接口获取发票抬头信息,参考PersonalInfoPage.ets:

  • 使用invoiceAssistant.selectInvoiceTitle获取InvoiceTitle对象
  • 从InvoiceTitle对象中获取发票抬头名称、税号等信息

在PersonalInfo中调用未成年人模式相关接口设置未成年人模式,参考PersonalInfoPage.ets:

  • 使用minorsProtection.leadToTurnOnMinorsMode引导用户开启未成年人模式。
  • 使用minorsProtection.leadToTurnOffMinorsMode引导用户关闭未成年人模式。
  • 使用minorsProtection.verifyMinorsProtectionCredential校验用户开启未成年人模式的密码。

在CommonUtil监听未成年状态变化,参考在CommonUtil.ets:

  • 使用@ohos.commonEventManager系统能力监听COMMON_EVENT_MINORSMODE_ON和COMMON_EVENT_MINORSMODE_OFF事件。

在OtherLoginPage页面中自定义用户的其他登录方式:

  • 比如手机号验证码、密码等

在ProtocolWebView页面中使用Web组件显示《华为账号用户认证协议》内容:

  • 在data.json中获取网页链接,当前仅支持中英文

在AgreementDialog中实现用户隐私协议的弹窗组件

  • 通过自定义CustomDialogController控制弹窗的显隐

在ErrorCodeEntity中定义通用的实体数据信息

  • 比如通用错误码、通用常量等

参考

  1. entry\src\main\ets\pages\QuickLoginPage.ets
  2. entry\src\main\ets\pages\PersonalInfoPage.ets
  3. entry\src\main\ets\commonUtil\CommonUtil.ets
  4. entry\src\main\ets\pages\HomePage.ets
  5. entry\src\main\ets\pages\MainPage.ets
  6. entry\src\main\ets\pages\OtherLoginPage.ets
  7. entry\src\main\ets\pages\ProtocolWebView.ets
  8. entry\src\main\ets\pages\AgreementDialog.ets
  9. entry\src\main\ets\pages\ErrorCodeEntity.ets

相关权限

  1. 本示例应用在调用一键登录组件和获取头像昵称授权等场景需要访问网络,已在module.json5文件中添加网络权限"ohos.permission.INTERNET"。

依赖

依赖设备具备WIFI能力

约束与限制

  1. 本示例仅支持标准系统上运行,支持设备:华为手机、2in1、平板(注:未成年人模式不支持2in1设备)。
  2. HarmonyOS系统:HarmonyOS Next Developer Beta1及以上。
  3. DevEco Studio版本:DevEco Studio Next Developer Beta1及以上。
  4. HarmonyOS SDK版本:HarmonyOS Next Developer Beta1及以上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值