什么是 Account Kit
你有没有遇到过这种情况:下载了一个新应用,又要注册账号、又要填手机号,特别麻烦?Account Kit 就是用来解决这个问题的。
Account Kit 让你的元服务可以快速使用华为账号登录。用户不需要再注册新账号,只要点一下"华为账号登录"按钮,就能直接进入应用。而且,如果用户同意,你还可以获取他的手机号,方便后续服务。
简单说,Account Kit 就是一个"快捷登录"工具,让用户用已有的华为账号就能登录你的元服务。
你可能会问:用户自己注册账号不行吗?当然行,但现在大家都嫌麻烦。下载一个新 App,又要填手机号、又要设密码、又要验证短信,很多人直接就放弃了。用华为账号登录,点一下就进来了,用户体验好很多,你的元服务转化率也会高很多。
核心功能
Account Kit 提供以下功能:
- 华为账号登录:让用户用华为账号快速登录元服务。登录过程很简单:创建一个登录请求,调用
executeRequest执行,系统会弹出华为账号的授权页面。用户同意后,你会收到一个authorizationCode(授权码),用这个授权码可以换取用户信息(头像、昵称等)。整个过程就像"用华为账号一键注册" - 获取手机号:经用户同意后,获取用户的手机号码。获取手机号用的是"快速验证手机号 Button"组件,它会向用户发起手机号授权申请。用户同意后,你就能拿到手机号。这个功能很实用,比如用户注册后可以直接绑定手机号,不需要再发短信验证
环境搭建
硬件要求
- 设备类型:华为手机、平板
- HarmonyOS 系统:HarmonyOS 6.0.0 Release 及以上
软件要求
- DevEco Studio 版本:DevEco Studio 6.0.0 Release 及以上
- HarmonyOS SDK 版本:HarmonyOS 6.0.0 Release SDK 及以上
搭建步骤
- 安装 DevEco Studio:去华为开发者官网下载安装
- 配置开发环境:确保网络环境正常
- 设备调试:使用真机进行调试
前置准备
在使用 Account Kit 之前,需要在 AppGallery Connect 上完成一些配置。
创建元服务
- 登录 AppGallery Connect
- 创建一个元服务项目
- 获取 Client ID 和 App ID
配置签名证书
- 在 DevEco Studio 中配置签名信息
- 在 AppGallery Connect 中配置签名证书指纹
配置 Client ID
如果元服务的 Client ID 和 App ID 不同,需要在module.json5中配置:
{"module":{"name":"xxx","type":"entry","metadata":[{"name":"client_id","value":"你的Client ID"}]}}项目结构
├── entry/src/main/ets // 代码区 │ ├── entryability │ │ └── EntryAbility.ets // 程序入口类 │ ├── pages // 存放页面文件目录 │ │ └── Index.ets // 主页面 └── entry/src/main/resources // 资源文件目录第一步:导入模块
import{hilog}from'@kit.PerformanceAnalysisKit';import{authentication}from'@kit.AccountKit';import{util}from'@kit.ArkTS';import{BusinessError}from'@kit.BasicServicesKit';导入需要的模块:
authentication:Account Kit 的认证接口util:工具类,用于生成 UUIDBusinessError:错误处理
第二步:创建登录请求
constloginRequest=newauthentication.HuaweiIDProvider().createLoginWithHuaweiIDRequest();loginRequest.forceLogin=false;loginRequest.state=util.generateRandomUUID();创建登录请求:
createLoginWithHuaweiIDRequest():创建一个华为账号登录请求forceLogin = false:如果用户没有登录华为账号,不强制显示登录界面state:一个随机 UUID,用于防止跨站请求伪造(CSRF 攻击)
第三步:执行登录请求
constcontroller=newauthentication.AuthenticationController();controller.executeRequest(loginRequest).then((response:authentication.LoginWithHuaweiIDResponse)=>{constloginWithHuaweiIDResponse=responseasauthentication.LoginWithHuaweiIDResponse;conststate=loginWithHuaweiIDResponse.state;// 验证 state 是否匹配,防止 CSRF 攻击if(state&&loginRequest.state!==state){hilog.error(0x0000,'testTag',`Failed to login. The state is different, response state:${state}`);return;}hilog.info(0x0000,'testTag','Succeeded in logging in.');constloginWithHuaweiIDCredential=loginWithHuaweiIDResponse.data!;constcode=loginWithHuaweiIDCredential.authorizationCode;// 处理 authorizationCode}).catch((error:BusinessError)=>{hilog.error(0x0000,'testTag',`Failed to login. errCode is${error.code}, errMessage is${error.message}`);})执行登录请求:
- 创建控制器:
AuthenticationController用来执行认证请求 - 执行请求:
executeRequest(loginRequest)发起登录请求 - 验证 state:检查返回的 state 是否和请求时的一致,防止 CSRF 攻击
- 获取授权码:登录成功后,
authorizationCode可以用来换取用户信息
第四步:获取手机号
如果需要获取用户的手机号,可以使用快速验证手机号 Button。
import{scenarioFusion}from'@kit.AccountKit';// 在 build 中使用Button('获取手机号').onClick(()=>{// 调用快速验证手机号 Button})快速验证手机号 Button 是 Account Kit 提供的一个 UI 组件,它会:
- 向用户发起手机号授权申请
- 用户同意后,返回手机号信息
错误处理
在使用 Account Kit 时,可能会遇到各种错误,需要妥善处理:
.catch((error:BusinessError)=>{constmainErrorMessage:string=error.message.split('.').shift()asstring;this.getUIContext().getPromptAction().showToast({message:`${error.code}:${mainErrorMessage}`,duration:2000});hilog.error(0x0000,'testTag',`Failed to login. errCode is${error.code}, errMessage is${error.message}`);})常见的错误码:
1001502001:用户未登录华为账号- 其他错误码:网络错误、用户取消等
实际应用场景
Account Kit 在实际开发中有很多用途:
快速注册
// 用户用华为账号登录后,直接创建账号constuser={huaweiId:loginWithHuaweiIDCredential.openID,phone:phoneNumber,createTime:newDate()};awaitcreateUser(user);手机号验证
// 获取手机号后,用于身份验证if(phoneNumber){// 发送验证码awaitsendVerificationCode(phoneNumber);}用户信息展示
// 展示用户头像和昵称constavatarUri=loginWithHuaweiIDCredential.avatarUri;constnickName=loginWithHuaweiIDCredential.nickName;适用场景
Account Kit 特别适合以下场景:
- 元服务:快速登录,不需要用户注册新账号
- 需要手机号的应用:获取用户手机号用于验证或服务
- 社交应用:用华为账号建立用户体系
- 电商应用:快速登录,提高转化率
注意事项
- 配置正确:Client ID 和签名证书指纹必须配置正确
- state 验证:一定要验证 state,防止 CSRF 攻击
- 错误处理:每个接口调用都要处理错误
- 用户隐私:获取手机号需要用户明确授权
- scope 权限:获取手机号前需要申请 phone scope 权限
核心流程图
华为账号登录的完整流程:
获取手机号的流程:
总结
Account Kit 让元服务可以快速使用华为账号登录,核心流程:
- 在 AppGallery Connect 上配置元服务
- 配置签名证书和 Client ID
- 创建登录请求
- 执行登录请求,获取授权码
- (可选)获取用户手机号
掌握了这些,你就能让你的元服务支持华为账号快速登录,提升用户体验。