|Account Kit Skill 一键登录工程化)
Account Kit 在 HarmonyOS 7 开放客户端与服务端 Skills可辅助生成一键登录页面、工程配置以及授权码换取用户信息的服务端代码。生成结果仍需开发者审查与真机验证。账号接入横跨 ArkTS 页面、权限、签名、Client ID、服务端接口、用户主键和隐私合规。传统复制示例的做法容易漏配置也容易把令牌处理错误地放到客户端。Account Kit Skill 把标准步骤交给 AI 编码工具执行但它不会替团队决定账户模型。本文把一次“一键登录接入”拆成前置检查、客户端生成、服务端生成、差异审查、身份映射和端到端验证。一、两个 Skill 负责两段工作官方文档给出两个能力hmos-account-kit-quicklogin-client生成 ArkTS 一键登录页面、工程依赖、权限与跳转hmos-account-kit-quicklogin-server生成 Java 服务端工程处理授权码换取用户信息。客户端和服务端应该分别执行任务分别审查。一次提示同时修改两端会让权限、密钥与业务文件混在同一差异中。二、接入前先冻结边界在让 AI 修改代码前明确目标模块、允许修改的配置、登录成功路由、已有会话接口、服务端语言、禁止读取的密钥目录、必须执行的检查和回滚方式。目标entry 模块接入华为账号一键登录 允许登录页面、路由适配、module.json5、oh-package 依赖 禁止业务首页、支付模块、签名材料、生产密钥 验证语法检查、构建、真机首次登录、取消与账号切换没有边界的 AI 指令很容易生成一个“能演示、不能合并”的登录页。三、确认 Skill 与 MCP 真正生效官方建议先验证 AI 工具能够命中 Skill并检查 DevEco MCP 连接。若输入“帮我接入登录”后工具直接自由编写代码而没有执行 Skill 前置检查就不应继续。使用 hmos-account-kit-quicklogin-client Skill 在 entry 模块接入华为账号一键登录。 复用现有 LoginViewModel不修改首页和支付模块 生成后列出修改文件、人工配置项和验证命令。强制名称触发更容易审计也能减少模型凭经验猜 API。四、客户端生成后的审查重点检查依赖版本是否与工程 SDK 一致权限是否最小Client ID 是否使用配置项登录按钮与页面生命周期是否正确取消与失败是否恢复可操作状态。typeLoginState|{kind:idle}|{kind:authorizing;requestId:string}|{kind:exchanging;requestId:string}|{kind:signed-in;userId:string}|{kind:cancelled}|{kind:failed;code:string;retryable:boolean}classLoginCoordinator{privaterequestIdasyncstart(){constidcrypto.randomUUID()this.requestIdidconstauthCodeawaitaccountAdapter.authorize()if(id!this.requestId)returnconstsessionawaitbackend.exchange(authCode)if(id!this.requestId)returnstore.signedIn(session.userId)}}快速重复点击、页面退出和账号切换会产生迟到结果requestId 用于保证只有当前链路能落地。五、授权码只能交给服务端客户端获取一次性授权结果后交给受控业务服务端。服务端验证请求、交换用户信息、映射内部用户并签发自己的会话。Client Secret、服务端 Token 和生产配置不能进入客户端、提示词或代码仓库。publicSessionResultexchange(LoginCommandcommand){IdempotentResultcachedresultStore.find(command.requestId());if(cached!null)returncached.session();HuaweiAccountaccountaccountClient.exchange(command.authorizationCode());InternalUseruseridentityService.resolve(account.getOpenId(),account.getUnionId());SessionResultresultsessionService.issue(user.getId());resultStore.save(command.requestId(),result);returnresult;}这是服务端分层示例不替代官方接口。授权码过期、重复交换、服务不可用和账号受限都要返回稳定错误码。六、用户主键不能直接用手机号手机号可能变化、为空或以匿名形式返回。团队应明确 OpenID、UnionID 与内部 userId 的映射边界。不同开发者、不同应用和跨端场景的标识范围不同不能凭字段名猜测全局唯一性。interfaceIdentityBinding{provider:huawei-accountappScopeOpenId:stringunionId?:stringinternalUserId:stringboundAt:number}账号合并、解绑和注销要走受控流程避免同一个外部身份绑定两个内部用户。七、会话存储与退出客户端只保存业务会话所需的最小凭据并使用安全存储。退出登录时清理本地会话、用户缓存和页面栈服务端撤销或失效会话。系统账号切换事件到来后应用重新验证绑定关系不能继续展示前一个账户的数据。八、错误语义要可恢复至少区分用户取消、网络超时、授权码过期、服务端拒绝、配置错误、账号受限和内部异常。用户取消不应显示红色错误配置错误不可无限重试网络超时允许保留当前页面并重试。functionmapLoginError(error:LoginError):LoginViewState{switch(error.kind){caseUserCancelled:return{message:,retryable:true}caseNetworkTimeout:return{message:网络暂不可用,retryable:true}caseInvalidClientConfig:return{message:登录配置异常,retryable:false}default:return{message:登录失败请稍后重试,retryable:false}}}九、生成代码的安全检查审查 Skill 新增的每个文件确认没有硬编码密钥、扩大权限、引入未知依赖、绕过现有架构或记录敏感信息。生成的服务端示例要接入项目统一的鉴权、限流、日志脱敏和错误处理。不要把“Skill 执行成功”当成“登录接入完成”。工具输出只能证明生成过程结束不能证明真实账号链路可用。十、端到端测试矩阵describe(LoginCoordinator,(){it(ignores stale authorization result,async(){coordinator.start()coordinator.start()awaitaccountAdapter.finishFirstRequest()expect(store.state.kind).not.toBe(signed-in)})it(does not create two users for duplicated request,async(){constaawaitbackend.exchange(fixtureCommand)constbawaitbackend.exchange(fixtureCommand)expect(b.userId).toBe(a.userId)})})真机覆盖首次登录、取消、授权码过期、重复点击、账号切换、退出、弱网、服务端 5xx、应用后台和进程恢复。十一、交付证据保留 Skill 名称与版本、修改文件清单、依赖与权限差异、构建日志、服务端测试、真机录屏和回滚说明。密钥只记录配置项名称不记录真实值。十二、上线清单客户端与服务端 Skill 分别执行并审查指令写清目标、允许范围和禁区Client Secret 与服务端 Token 从未进入客户端OpenID、UnionID 和内部 userId 映射明确重复请求与迟到回调安全处理退出和账号切换清理完整错误码可解释、可恢复构建、服务端测试和真机登录都有证据。结语Account Kit Skill 的价值是把高频接入步骤变成可重复的 AI 工程流程。真正的完成标准仍是修改范围可审查、秘密留在服务端、身份映射稳定、异常可恢复并通过端到端真机验证。官方参考Account Kit Skill 能力开放https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/account-skill2026 年 6 月开发者月刊https://developer.huawei.com/consumer/cn/monthly/202606