《HarmonyOSNext极速开发指南:5大Account Kit能力一键集成,用户信息秒级获取!》
【摘要】 《HarmonyOSNext极速开发指南:5大Account Kit能力一键集成,用户信息秒级获取!》##Harmony OS Next ##Ark Ts ##教育本文适用于教育科普行业进行学习,有错误之处请指出我会修改。 🚀 一键搞定用户信息!Account Kit超全能力指南无需手动填写! 用华为Account Kit快速获取头像/昵称/手机号/地址/发票,用户体验直接起飞~ ✨ 一、...
《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️⃣ 穿戴设备仅支持头像/手机号获取(地址发票不可用)
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)