当前位置: 首页 > news >正文

【FAQ】HarmonyOS SDK 闭源开放能力 — Account Kit

1.问题描述:

接入微信登录后,还要接华为登录吗?

解决方案:

为了帮助用户省去多次输入不同应用账号登录的繁琐过程,我们为HarmonyOS应用和元服务提供了使用华为账号快捷登录的能力。提交至华为应用市场的HarmonyOS应用和元服务,需要遵循如下规范:
如果开发者应用支持用户使用第三方账号登录,则该应用需提供华为账号登录选项。用户可通过华为账号快捷地登录您的应用,并获得华为账号的安全配置。

其中登录场景全部满足以下三点时,华为账号登录为必选:

  1. 接入了第三方登录方式(如微信登录、QQ登录)。
  2. 应用和三方账号CP非同一关联主体(如qq音乐接入微信登录,就属于同一关联主体)。
  3. 不涉及使用公民真实身份信息来鉴定用户身份。其中公民真实身份信息包括中国大陆居民身份证、中华人民共和国外国人永久居留身份证、护照、台湾居民来往大陆通行证、台湾居民居住证、港澳居民来往内地通行证、港澳居民居住证、香港身份证、澳门身份证、军人身份证。

2.问题描述:

华为账号一键登录无法获取手机号。

解决方案:

在华为账号一键登录场景下,获取匿名手机号为空或无法获取到明文手机号时,建议通过以下步骤排查解决:

  • 申请权限待生效,权限申请后需要24小时后生效或将调试设备系统时间向后调整24小时后重试。
  • 华为账号未绑定手机号,该异常场景应用需要展示其他登录方式。
  • 使用华为账号一键登录服务的账号必须是中国境内(不包含中国香港、中国澳门、中国台湾)华为账号。
  • 应用服务端获取华为账号绑定号码时,该服务器必须部署在中国境内(不包含中国香港、中国澳门、中国台湾),参考华为账号一键登录约束与限制。
  • 确认权限申请成功后,确认scope参数是否符合预期,详情可参考一键登录客户端开发。
  • 开发者开启了代码混淆,quickLoginAnonymousPhone(匿名手机号)属性需要配置混淆白名单防止被混淆,参考混淆选项配置指导中使用-keep-property-name保留属性名称。

3.问题描述:

一键登录是否支持H5接入?

解决方案:

支持。当前渲染H5页面依赖的是ArkWeb能力,将一键登录Button直接渲染到H5页面,依赖的是ArkWeb同层渲染(当非系统框架的UI组件功能或性能不如系统组件时,可使用同层渲染技术,通过ArkUI组件渲染这些组件),应用侧(arkTs)与前端页面(H5)的数据交互可参考建立应用侧与前端页面数据通道。

完整demo参考:基于H5使用 Account Kit 提供的华为账号一键登录 Button 组件登录流程。

4.问题描述:

华为账号一键登录接入过程中,客户端获取到AuthorizationCode后,需要传到服务端,通过服务端调用华为账号接口获取用户信息。AuthorizationCode传到服务端调用华为账号接口这部分功能,是否可以在客户端直接实现?

解决方案:

在HarmonyOS开发中,华为账号一键登录通常需要通过应用服务器来获取业务登录凭证,不建议直接在客户端获取。以下是具体原因:

  1. 安全性考虑

    防止敏感信息泄露:业务登录凭证(如Access Token)是敏感信息,直接在客户端获取和存储可能会增加被恶意获取的风险。

  2. 业务逻辑的实现

    用户关联和注册:服务器可以根据获取到的用户信息(如UnionID、OpenID、手机号等)完成用户关联、注册等业务逻辑。

  3. 客户端的限制

    无法处理复杂逻辑:客户端处理能力有限,不适合处理复杂的业务逻辑和安全策略。

综上所述,不建议在客户端完成此部分,推荐在服务端实现。

5.问题描述:

应用接入华为账号一键登录,出现部分华为用户登录时页面白屏。

解决方案:

如果用户的华为账号为邮箱账号,并且没有绑定手机账号,此时quickLoginAnonymousPhone调用AuthorizationWithHuaweiIDRequest授权请求获取匿名手机号,手机号为空。此时需要进行空值判断并引导用户使用其他登录方式,否则使用空手机号进行后续登录处理,可能会导致页面空白,登录失败。

6.问题描述:

登录同一个华为账号的不同设备上,同一个应用的token是相同的吗?

解决方案:

不同。token是与设备绑定的标识符。即使使用同一华为账号,在不同设备上安装同一应用时,系统会为每个设备生成独立的token。

7.问题描述:

单工程多product开发模式,一键登录的metadata如何分开配置?

解决方案:

通过HarmonyOS的扩展构建功能,开发者可以在编译阶段动态配置模块的参数。具体来说:

全局配置:若配置信息涉及多个模块或需要跨模块操作(如根据产物名称动态调整参数),建议将配置逻辑放在项目根目录下的hvigorfile.ts文件中。

模块级配置:若仅需配置单个模块的metadata参数,且无需跨模块操作,则可以直接在模块目录中进行配置。

详细步骤:

1、需要获取产物名称,根据产物配置对应的模块参数,因此应在最外层配置hvigorfile.ts文件。

2、根据如下代码获取应用配置参数,获取其中配置的产物名称。


const appNode: HvigorNode = getNode(__filename);const appContext = appNode.getContext(OhosPluginId.OHOS_APP_PLUGIN) as OhosAppContext;const bundleProduct = appContext.getCurrentProduct()const productName = bundleProduct['productName']

3、使用subNodes接口获取所有模块的环境信息,然后通过getContext接口分别获取hap包和hsp包配置信息。


const hapContext = hapNode.getContext(OhosPluginId.OHOS_HAP_PLUGIN) as OhosHapContext;const hspContext = hapNode.getContext(OhosPluginId.OHOS_HSP_PLUGIN) as OhosHspContext;

4、根据第2步获取的包名和第三步获取到的环境信息,使用getModuleJsonOpt获取对应模块下的module.json5配置,修改后,使用setModuleJsonOpt将修改后的配置信息写入。


if ('xxx' === moduleName) {const moduleJsonOpt = hapContext?.getModuleJsonOpt()console.log('moduleJsonOpt:', moduleJsonOpt);if (moduleJsonOpt) {moduleJsonOpt['module']['metadata'] = productName === 'xxxxxx' ?[{ "name": "client_id", "value": "xxxxxxxxx" }] : [{ "name": "client_id", "value": "xxxxxxxxx" }]// 将obj对象设置回上下文对象以使能到构建的过程与结果中hapContext.setModuleJsonOpt(moduleJsonOpt);}}

总体配置文件hvigorfile.ts,配置如下:


import { appTasks, hapTasks, OhosHapContext, OhosAppContext, OhosPluginId } from '@ohos/hvigor-ohos-plugin';import { createJsFile } from './plugin/pluginCreateJsFile';import { getNode, hvigor, HvigorNode } from '@ohos/hvigor'hvigor.nodesEvaluated(() => {const appNode: HvigorNode = getNode(__filename);const appContext = appNode.getContext(OhosPluginId.OHOS_APP_PLUGIN) as OhosAppContext;const bundleProduct = appContext.getCurrentProduct()const productName = bundleProduct['productName']appNode.subNodes((hapNode: HvigorNode) => {// 获取hap模块上下文信息const hapContext = hapNode.getContext(OhosPluginId.OHOS_HAP_PLUGIN) as OhosHapContext;const moduleName = hapContext?.getModuleName()const modulePath = hapContext?.getModulePath()if ('xxx' === moduleName) {const moduleJsonOpt = hapContext?.getModuleJsonOpt()console.log('moduleJsonOpt:', moduleJsonOpt);if (moduleJsonOpt) {moduleJsonOpt['module']['metadata'] = productName === 'xxxx' ?[{ "name": "client_id", "value": "xxxxx" }] : [{ "name": "client_id", "value": "xxxxx" }]// 将obj对象设置回上下文对象以使能到构建的过程与结果中hapContext.setModuleJsonOpt(moduleJsonOpt);}}});});export default {system: appTasks,plugins: [createJsFile(),]}
http://www.zskr.cn/news/53154.html

相关文章:

  • linux apache 域名配置
  • 2025年广东专业服务器设备搬运服务商权威推荐:广东数据中心服务器搬家方案/广东服务器设备搬运/广东机房服务器搬运公司服务商精选
  • virtualbox新建centos虚拟机并配置双网卡
  • 2025年预防性维护用热像仪厂家权威推荐榜单:手持测温热像仪/TiX560/TiX520红外热像仪/手机测温热像仪源头厂家精选
  • drf 查找
  • nacos集群安装
  • 使用UCS 音频(效)文件通用分类系统 Universal Category System整理音效文件
  • 如何通过 KubeSphere 构建云原生平台,加速金融科技业务创新
  • 2025年温度传感器批发厂家权威推荐榜单:水温传感器/传感器/红外温度传感器源头厂家精选
  • linux apache php 配置
  • 吴恩达深度学习课程二: 改善深层神经网络 第三周:超参数调整,批量标准化和编程框架(三)多值预测与多分类
  • M02694:波兰表达式 25-11-18
  • 详细介绍:金融专业毕业设计:python股票数据分析预测系统 神经网络LSTM预测算法 股价预测 深度学习 requests爬虫 Flask框架 大数据 毕业设计✅
  • 【E3S出版 | 高录用快见刊 | 即将截稿】第二届环境工程、城市规划与设计国际学术会议(EEUPD 2025)
  • 2025年塑料回收公司排名:这些企业领跑行业,市场可靠的塑料回收品牌选哪家聚焦优质品牌综合实力排行
  • 2025年塑料回收企业区域影响力榜单,评价好的塑料回收直销厂家排行榜单聚焦优质品牌综合实力排行
  • 2025年系统门窗10大品牌定做厂家推荐榜单:系统门窗厂家/系统门窗制造商/系统门窗价格源头厂家精选
  • 2025年11月国内百叶窗企业综合实力排行榜单:专业厂家推荐与选择指南
  • 2025年国内百叶窗厂家综合实力排行榜TOP10推荐
  • 预制装配式厨房厂 ,预制整体厨房定制厂家,民宿成品卫生间厂,宾馆集成卫生间厂 ,民宿快装式墙板厂 ,宿舍成品卫生间工厂,养老院整体厨房直供 --南京正标环保
  • 2025年国内百叶窗企业排行榜:十大知名厂家综合评测与选择指南
  • 2025年国内锯条品牌权威排名榜单:行业专家深度解析与选购指南
  • 2025 最新软著申请公司推荐!计算机 / 企业 / 个人软著申请代办权威榜单,一站式高效办理代理服务机构口碑排行榜
  • 留学找代写被抓影响学业?2025年靠谱处理机构盘点:学术危机应对/名校沟通/记录消除服务测评
  • 2025美国大学处分申诉高成功率中介TOP5:厚仁/新通领衔护航留学路,高胜诉率机构全解析
  • 大数据毕业设计:python新闻数据可视化分析系统 时间序列预测算法 ARIMA预测模型 机器学习 爬虫 SnowNLP情感分析(源码+文档)✅ - 详解
  • 2025出国留学机构有哪些
  • 深入解析:Tauri 1.x和2.x的区别对照表
  • linux anaconda
  • ExportExcel-AnnotationList-反射