《HarmonyOSNext极速开发指南:5大Account Kit能力一键集成,用户信息秒级获取!》

2025-06-28 10:48:24
107次阅读
0个评论

《HarmonyOSNext极速开发指南:5大Account Kit能力一键集成,用户信息秒级获取!》

##Harmony OS Next ##Ark Ts ##教育

本文适用于教育科普行业进行学习,有错误之处请指出我会修改。


🚀 一键搞定用户信息!Account Kit超全能力指南

无需手动填写! 用华为Account Kit快速获取头像/昵称/手机号/地址/发票,用户体验直接起飞~ ✨


一、📸 头像昵称秒级获取(超实用!)

适用场景:用户首次登录时,自动拉取华为账号头像昵称,告别手动上传!

🔄 业务流程(3步极简!)

graph TD
A[调用授权API] --> B{已授权?}
B -->|Yes| C[直接获取数据]
B -->|No| D[拉起授权页]
D --> E[用户确认授权]
E --> C

⚙️ 核心接口三件套

接口方法 作用说明
createAuthorizationWithHuaweiIDRequest() 创建授权请求对象
constructor(context?) 创建授权控制器
executeRequest(request): Promise<Response> 执行授权并获取结果

⚠️ 避坑指南

🚫 未设置昵称时:默认返回华为账号绑定的匿名手机号/邮箱 🔥 ​​必看错误码​​:1001500001(证书校验失败 = 公钥指纹未配好!)


二、🛠️ 客户端开发四步曲(附完整代码!)

Step 1️⃣ 导入模块

import { authentication } from '@kit.AccountKit'; 
import { hilog } from '@kit.PerformanceAnalysisKit';
import { util } from '@kit.ArkTS'; 
import { BusinessError } from '@kit.BasicServicesKit';

Step 2️⃣ 配置授权参数

const authRequest = new authentication.HuaweiIDProvider()
  .createAuthorizationWithHuaweiIDRequest();

// ✅ 关键配置
authRequest.scopes = ['profile'];          // 必须声明profile作用域
authRequest.permissions = ['serviceauthcode']; // 需要Authorization Code时添加
authRequest.forceAuthorization = true;      // 强制拉起授权页
authRequest.state = util.generateRandomUUID(); // 防CSRF攻击

Step 3️⃣ 执行授权请求

try {
  const controller = new authentication.AuthenticationController(
    this.getUIContext().getHostContext()
  );
  
  controller.executeRequest(authRequest)
    .then((data) => {
      const res = data as authentication.AuthorizationWithHuaweiIDResponse;
      
      // ✅ 解析关键数据
      const avatarUri = res?.data?.avatarUri;     // 头像URL
      const nickName = res?.data?.nickName;       // 用户昵称
      const authCode = res?.data?.authorizationCode; // 服务端凭证
      
      // 💡 使用提示:头像需自行下载URL内容
    })
    .catch((error: BusinessError) => {...});
} catch (error) {...}

Step 4️⃣ 错误处理大全

dealAllError(error: BusinessError): void {
  const errorMap = new Map([
    [1001502001, "❌ 华为账号未登录!快去登录~"],  
    [1001502005, "🌐 网络开小差啦!检查网络重试"], 
    [1001502012, "⛔ 用户取消授权了哦"],  
    [12300001, "🔥 系统服务异常,请稍后再试"]
  ]);
  
  hilog.error(0x0000, 'testTag', `错误码: ${error.code}, 信息: ${error.message}`);
  showToast(errorMap.get(error.code) || "未知错误,请联系客服"); // 对用户友好提示
}

三、📱 手机号快速验证(秒级认证!)

适用场景:注册/登录时自动获取用户手机号,省去短信验证码步骤!

🔍 特殊要求

+ 必须申请phone的scope权限!
- 未申请会报错1001502014

📝 配置差异点(vs头像获取)

// 只需修改scopes参数!
authRequest.scopes = ['phone']; // 其他配置与头像方案相同

⚠️ 特别注意

🌟 首次授权后:后续可直接获取手机号(但需定期刷新凭证) 📆 ​​时效性​​:该方案获取的是​​账号绑定手机号​​,非实时验证新号


四、📦 收货地址 / 发票抬头获取

🗺️ 收货地址流程

graph LR
A[调用chooseAddress] --> B[打开地址管理页]
B --> C{用户操作}
C -->|新增地址| D[填写地址]
C -->|选择已有| E[确认地址]
D --> F[返回地址数据]
E --> F

🧾 发票抬头调用

invoiceAssistant.selectInvoiceTitle(context)
  .then((data) => {
    console.log("抬头发票号:" + data.taxNumber); 
  });

🔒 权限申请速查表

能力 是否需要申请权限 申请方式
收货地址 邮件至accountkit@huawei.com
发票抬头 无需申请
手机号(phone) 开发者后台申请

📮 邮件模板: ​​主题​​:【获取收货地址】权限申请 ​​正文​​: 企业名称:xxx 应用包名:com.xxx.xxx APP ID:123456 ​​5个工作日内审核完毕​


💎 服务端开发关键点(拿小本本记好!)

🔑 Token刷新机制

令牌类型 有效期 刷新方式
Access Token 60分钟⏳ 用Refresh Token刷新
Refresh Token 180天📅 失效后需重新用户授权

⚡ 最佳实践

# 刷新命令示例
POST /oauth2/v3/token?grant_type=refresh_token&refresh_token=xxx

💡 避坑口诀: Access Token一小时,失效快用Refresh救 Refresh Token半年寿,过期重走授权路


🎯 总结:5大能力快速索引

能力 核心接口 适用设备 是否需要权限
头像昵称 createAuthorizationWithHuaweiIDRequest 📱⌚️
手机号验证 同上(scopes设为phone) 📱⌚️
收货地址 chooseAddress() 📱(⌚️不支持)
发票抬头 selectInvoiceTitle() 📱(⌚️不支持)
凭证刷新 REST API刷新接口 服务端 -

最后叮咛 👇 1️⃣ 所有客户端接口​​必须在页面生命周期内调用​​ 2️⃣ 遇到错误码1001500002?那是重复请求,直接忽略! 3️⃣ 穿戴设备仅支持头像/手机号获取(地址发票不可用)

收藏00

登录 后评论。没有帐号? 注册 一个。