news 2026/6/6 18:40:49

HarmonyOS Account Kit:让你的App快速登录华为账号-开发实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HarmonyOS Account Kit:让你的App快速登录华为账号-开发实战

什么是 Account Kit

你有没有遇到过这种情况:下载了一个新应用,又要注册账号、又要填手机号,特别麻烦?Account Kit 就是用来解决这个问题的。

Account Kit 让你的元服务可以快速使用华为账号登录。用户不需要再注册新账号,只要点一下"华为账号登录"按钮,就能直接进入应用。而且,如果用户同意,你还可以获取他的手机号,方便后续服务。

简单说,Account Kit 就是一个"快捷登录"工具,让用户用已有的华为账号就能登录你的元服务。

你可能会问:用户自己注册账号不行吗?当然行,但现在大家都嫌麻烦。下载一个新 App,又要填手机号、又要设密码、又要验证短信,很多人直接就放弃了。用华为账号登录,点一下就进来了,用户体验好很多,你的元服务转化率也会高很多。

核心功能

Account Kit 提供以下功能:

  1. 华为账号登录:让用户用华为账号快速登录元服务。登录过程很简单:创建一个登录请求,调用executeRequest执行,系统会弹出华为账号的授权页面。用户同意后,你会收到一个authorizationCode(授权码),用这个授权码可以换取用户信息(头像、昵称等)。整个过程就像"用华为账号一键注册"
  2. 获取手机号:经用户同意后,获取用户的手机号码。获取手机号用的是"快速验证手机号 Button"组件,它会向用户发起手机号授权申请。用户同意后,你就能拿到手机号。这个功能很实用,比如用户注册后可以直接绑定手机号,不需要再发短信验证

环境搭建

硬件要求

  • 设备类型:华为手机、平板
  • HarmonyOS 系统:HarmonyOS 6.0.0 Release 及以上

软件要求

  • DevEco Studio 版本:DevEco Studio 6.0.0 Release 及以上
  • HarmonyOS SDK 版本:HarmonyOS 6.0.0 Release SDK 及以上

搭建步骤

  1. 安装 DevEco Studio:去华为开发者官网下载安装
  2. 配置开发环境:确保网络环境正常
  3. 设备调试:使用真机进行调试

前置准备

在使用 Account Kit 之前,需要在 AppGallery Connect 上完成一些配置。

创建元服务

  1. 登录 AppGallery Connect
  2. 创建一个元服务项目
  3. 获取 Client ID 和 App ID

配置签名证书

  1. 在 DevEco Studio 中配置签名信息
  2. 在 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:工具类,用于生成 UUID
  • BusinessError:错误处理

第二步:创建登录请求

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

执行登录请求:

  1. 创建控制器AuthenticationController用来执行认证请求
  2. 执行请求executeRequest(loginRequest)发起登录请求
  3. 验证 state:检查返回的 state 是否和请求时的一致,防止 CSRF 攻击
  4. 获取授权码:登录成功后,authorizationCode可以用来换取用户信息

第四步:获取手机号

如果需要获取用户的手机号,可以使用快速验证手机号 Button。

import{scenarioFusion}from'@kit.AccountKit';// 在 build 中使用Button('获取手机号').onClick(()=>{// 调用快速验证手机号 Button})

快速验证手机号 Button 是 Account Kit 提供的一个 UI 组件,它会:

  1. 向用户发起手机号授权申请
  2. 用户同意后,返回手机号信息

错误处理

在使用 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 特别适合以下场景:

  • 元服务:快速登录,不需要用户注册新账号
  • 需要手机号的应用:获取用户手机号用于验证或服务
  • 社交应用:用华为账号建立用户体系
  • 电商应用:快速登录,提高转化率

注意事项

  1. 配置正确:Client ID 和签名证书指纹必须配置正确
  2. state 验证:一定要验证 state,防止 CSRF 攻击
  3. 错误处理:每个接口调用都要处理错误
  4. 用户隐私:获取手机号需要用户明确授权
  5. scope 权限:获取手机号前需要申请 phone scope 权限

核心流程图

华为账号登录的完整流程:

在 AppGallery Connect 配置元服务

配置签名证书和 Client ID

创建 LoginWithHuaweiIDRequest

设置 forceLogin 和 state 参数

调用 executeRequest 发起登录

系统弹出华为账号授权页面

用户是否同意授权?

登录失败或用户取消

验证 state 防止 CSRF 攻击

获取 authorizationCode 授权码

用授权码换取用户信息

获取手机号的流程:

在页面中放置快速验证手机号 Button

用户点击获取手机号按钮

系统弹出手机号授权对话框

用户是否同意授权?

获取手机号失败

返回用户手机号

可用于身份验证或绑定服务

总结

Account Kit 让元服务可以快速使用华为账号登录,核心流程:

  1. 在 AppGallery Connect 上配置元服务
  2. 配置签名证书和 Client ID
  3. 创建登录请求
  4. 执行登录请求,获取授权码
  5. (可选)获取用户手机号

掌握了这些,你就能让你的元服务支持华为账号快速登录,提升用户体验。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/6 18:38:49

GD32替换STM32踩坑记:手把手教你用STM32CubeIDE+OpenOCD调试国产MCU

GD32替换STM32实战指南:STM32CubeIDE与OpenOCD深度适配技巧在嵌入式开发领域,越来越多的工程师开始关注国产MCU的性能与成本优势。作为STM32的兼容替代方案,GD32系列凭借出色的性价比吸引了大量开发者。但当我们真正将项目从STM32迁移到GD32时…

作者头像 李华
网站建设 2026/6/6 18:37:37

LiteDB.Studio:免费开源的LiteDB数据库可视化管理终极指南

LiteDB.Studio:免费开源的LiteDB数据库可视化管理终极指南 【免费下载链接】LiteDB.Studio A GUI tool for viewing and editing documents for LiteDB v5 项目地址: https://gitcode.com/gh_mirrors/li/LiteDB.Studio 你是否正在使用LiteDB v5作为应用程序的…

作者头像 李华
网站建设 2026/6/6 18:37:28

CVBS与RGB模拟视频信号:原理、差异与嵌入式系统选型指南

1. 从一根黄线说起:模拟视频信号的江湖往事 如果你拆开过一台老式的DVD播放机、游戏机,或者观察过监控摄像头的后端,大概率会看到一排颜色各异的RCA接口。其中,那根 黄色的接口 ,承载的就是我们今天要聊的主角之一—…

作者头像 李华
网站建设 2026/6/6 18:34:57

【信息科学与工程学】【物理/化学科学和工程技术】知识体系04 热学 系列二05

编号 类型 热学领域 子领域 核心数学方程式/算法模型 逐步推理思考的数学方程式及数字/数值 参数列表 时序数学方程式和时序周期变化和稳态/非稳态 关联知识 加工工具/机床/装备及厂商及加工工艺及各类时序流程和各类注意事项 1141 计算热学 基于图神经网络(GNN)…

作者头像 李华