HarmonyOS鸿蒙Next调试相关问题

HarmonyOS鸿蒙Next调试相关问题 1.发布证书打包测试还是返回1001500001是否正常?

2.新的调试证书配置好后不会再出现1001500001,但现在完全按照文档上的请求去调用两种登录接口(createAuthorizationWithHuaweiIDRequest,createLoginWithHuaweiIDRequest)会都报错401

8 回复

【背景知识】 应用接入华为账号,按照开发文档接入华为账号一键登录后,华为账号无法登录或者登录报错。 华为账号服务其他常见错误码如下:

错误码ID 错误信息概述
1001500001 Failed to check the fingerprint of the app bundle.
1001500002 This error code is reported when a request is already being processed.
1001500003 The scopes or permissions are not supported.
1001500004 The account does not support this function.
1001502014 The app does not have the required scopes or permissions.
1001502003 Invalid input parameter value.

【解决方案】

一、错误码1001500001的含义为应用指纹证书验证失败,可能原因:应用的指纹证书未配置或配置错误。 排查定位思路:

  1. Client ID是否配置错误: 检查module type为entry的模块下module.json5中的clientId是否配置错误,请参考配置Client ID。 注意:此处client_id的获取路径为:AGC的常规->应用->OAuth 2.0客户端ID(凭据->Client ID)。 在工程中entry模块的module.json5文件中,新增metadata,配置name为client_id,value为Client ID的值。 错误示例1、client_id在工程里面沒有配置。 错误示例2、client_id的value写到string里面(比如:“value”: “$string:clientId”)也会导致授权报错。 错误示例3、client_id的value里面配置成APP ID,而不是Client ID的值。 错误示例4、module.json5里面配置了多个client_id。
  2. 检查应用的签名证书指纹是否配置正确,可以按照文档里面的添加公钥指纹,检查应用签名。参考文档:(配置应用签名证书指纹)。 错误示例1、AGC上面根本就没有添加公钥指纹。 错误示例2、AGC上面直接添加证书指纹,这个是错误的,在HarmonyOS API 9及以上需要添加公钥指纹。 错误示例3、本地工程里面配置的证书和AGC上面应用的SHA256证书/公钥指纹上面的证书不是同一套。
  3. File -> Project Structure… -> Project -> Signing Configs界面,不能勾选“Automatically generate signature”进行自动签名,需要手动配置签名。 可以按照开发准备里面的说明配置:配置签名信息
  4. 网络问题,可以看下设备网络是否有问题,可以换个网络,比如切换到移动网络或者WIFI下面再试下是否OK。
  5. 在AGC上面,添加公钥指纹(HarmonyOS API 9及以上)后,指纹有一定时间的缓存,不会立刻生效,建议配置完成后等半小时再尝试。
  6. 检查下您的手机是否有修改系统时间,这个不建议修改。 上述步骤排查完成后,还是没有发现问题,可以再做下面的排查: 安装应用后执行(Windows):
    hdc shell bm dump -n 包名 | findstr appId
    
    安装应用后执行(Mac):
    hdc shell bm dump -n 包名 | grep appId
    
    将“appId”中包名下划线后的字符串拷贝到新文件中(文件名可自行定义,例如SHA.txt)再执行下面的命令行即可得到公钥指纹再与AGC上面配置的对比下看是否一致。
    certutil -hashfile F:\\SHA.txt SHA256
    
    对比出来的appId不一致的话,需要重新申请公钥指纹证书配置应用签名指纹证书

二、如果提示出现如下报错为参数错误,可以看下params. style设置为BUTTON类样式还是ICON类样式,ICON类是华为账号登录按钮的样式,不是华为一键登录按钮的样式,用户在使用华为账号一键登录时错误的使用了ICON类样式。

[LOGIN_WITH_HUAWEI_ID_WIDGET] 华为一键登录失败: {"code":401,"message":"Parameter error.Only supports plain text buttons."}

更多华为账号一键登录失败场景请查看:华为账号一键登录失败

更多关于HarmonyOS鸿蒙Next调试相关问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


问题解决:

问题一:发布证书打包测试仍报错1001500001是否正常?

原因分析:

返回错误码 1001500001(应用指纹证书校验失败)属于异常情况,常见原因包括:

  • client_id配置错误:module.json5 中配置的 client_id 与AGC(AppGallery Connect)平台不一致。
  • 指纹证书未生效:在AGC平台更新证书后未等待生效(通常需要10分钟)或未更新本地 versionCode 触发缓存刷新。
  • 证书不匹配:发布证书的指纹未正确添加到AGC平台,或打包时使用了错误的签名文件。

解决步骤:

1、检查client_id配置:

确保 entry 模块下的 module.json5 文件中 client_id 值与AGC平台完全一致,格式应为 “value”: “实际值”,而非引用字符串资源(如 “$string:clientId”)。

2、验证指纹证书配置:

  • 登录AGC平台,进入项目设置,检查应用的 公钥指纹 是否已添加且与本地发布证书的SHA256指纹一致。
  • 若更换过证书,需在AGC平台删除旧指纹并重新添加新指纹。

3、触发证书生效:

修改 app.json5 中的 versionCode 值(如递增版本号),重新打包并测试。

问题二:调试证书配置后调用登录接口仍报错401

错误分析:

错误码 401 通常表示参数错误或用户授权未通过,具体原因可能包括:

1、接口参数格式错误:

  • createAuthorizationWithHuaweiIDRequest 或 createLoginWithHuaweiIDRequest 的输入参数(如样式参数 style)不符合规范。
  • 若使用华为账号登录按钮样式,需确认 style 设置为 BUTTON 类型(如 BUTTON_RED 或 BUTTON_WHITE),而非 ICON 类型。

2、权限或Scope缺失:

  • 未在 module.json5 中声明 ohos.permission.ACCOUNT_MANAGER 或其他华为账号相关权限。
  • 未在 scopes 参数中申请必要的权限(如手机号授权需添加 “phone”)。

3、调试证书与接口权限不兼容:

确保调试证书绑定的应用Bundle ID与AGC平台注册的一致,且已开启华为账号相关服务。

解决步骤:

1、检查参数配置:

对比接口参数与华为官方文档示例,重点检查以下字段:

// 示例:华为账号登录按钮样式
const params = {
  style: abilityAccessCtrl.HuaweiIdAuthButtonStyle.BUTTON_RED, // 必须为BUTTON类型
  // 其他参数...
};

2、补充权限声明:

在 module.json5 中添加账号权限:

{
  "module": {
    "requestPermissions": [
      {
        "name": "ohos.permission.ACCOUNT_MANAGER"
      }
    ]
  }
}

3、检查Scope配置:

若需获取用户敏感信息(如手机号),在调用接口时需传入 scopes 参数并申请对应权限:

const scopes = ["phone"]; // 根据业务需求调整

const authRequest = await abilityAccessCtrl.createAuthorizationWithHuaweiIDRequest(scopes);

通用注意事项

1、签名一致性:

Debug与Release包的签名证书需保持一致,避免因签名差异导致指纹校验失败。

2、真机测试:

部分权限(如后台定位)需在真机测试,模拟器可能无法复现问题。

3、日志排查:

通过IDE日志过滤关键字(如 quickLoginWithHuaweiID)确认接口调用流程是否完整。

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

  1. 现象:应用在使用华为一键登录时无法跳转至登录成功的页面,页面无反应。出现1001500001

【背景知识】:

  1. 华为账号登录提供两种组件:

    • 华为账号一键登录:华为账号一键登录为BUTTON类型,可以获取到用户的手机号和UnionID/OpenID。
    • 华为账号登录:华为账号登录为ICON类型。可以获取到获取UnionID/OpenID。开发者可以根据需求自行选择使用哪种登录方式。
  2. 在使用华为账号一键登录时kit会打印日志关键字:quickLoginWithHuaweiID,如果有日志quickLoginWithHuaweiID success打印则说明调用成功,排除账号问题。华为账号登录的关键字为LoginWith,本文主要介绍华为账号一键登录时的一些场景。

I C05320/huawei_id_svc/HWID_SA_055: DealOplogEvent enter
I C04707/huawei_id_svc/HaInnerSA: OnEvent(hwid_100, 0, HMS_API_CALLED)
I A04705/com.example.hm/LoginWithHuaweiIDButton: quickLoginWithHuaweiID success
  1. 若没有上述日志打印,调用失败则根据文档查找错误码,对应进行处理,参考:错误码

【问题定位】

  1. 搜索日志关键字quickLoginWithHuaweiID success,查看日志中是否有调用成功。

  2. 没有调用成功的话需要根据背景知识3进行排查。

  3. 调用成功后依然无法登录则需要检查代码逻辑方面的问题。

  4. 如果遇到1001500001报错,原因为指纹证书校验失败,可能原因如下:

  5. 如果遇到1001500001报错,原因是指纹证书校验失败,可能原因大概如下: client_id未配置或配置的值不正确。

  6. 应用的指纹证书未配置或配置错误。

  7. debug安装包和release安装包的签名存在差异。

【修改建议】

  1. 检查module type为entry的模块下module.json5中的client_id是否配置或配置的值是否正确,请参考配置Client ID
  2. 检查AGC上应用的指纹证书,详情请见添加公钥指纹
  3. 更新app.json5中的versionCode使本地缓存失效后再进行重试。

其余现象参考文档:华为账号一键登录失败-行业常见问题-教育类行业实践-行业实践 - 华为HarmonyOS开发者

返回错误码 1001500001 属于应用指纹证书校验失败,即使使用发布证书打包仍出现此问题,可能涉及以下原因:

1.Client ID配置不匹配

检查module.json5中client_id是否与AGC(AppGallery Connect)平台上的发布证书配置的Client ID完全一致,注意区分项目Client ID与应用Client ID。

2.指纹证书未生效

在AGC平台完成发布证书指纹配置后,需等待至少10分钟生效,或通过修改应用的versionCode(在app.json5中)强制触发生效。

确保当前打包的HAP/HSP使用的是AGC平台配置的发布证书,而非本地调试证书。

3.Profile设备列表限制

若通过内部测试渠道安装,需确认设备的UDID已添加到内部测试Profile的允许列表中,否则会导致安装时的证书校验失败。

错误码 401 通常与参数错误或权限缺失相关

//证书与权限检查清单:

// module.json5 示例片段
{
  "module": {
    "abilities": [
      {
        "permissions": ["ohos.permission.ACCOUNT_MANAGER"]
      }
    ],
    "client_id": "YOUR_PUBLISH_CLIENT_ID" // 必须与AGC发布证书配置一致
  }
}

发布证书打包测试返回1001500001是否正常?

错误码 1001500001 表示应用指纹证书校验失败。

原因:

Client ID配置错误:未在 module.json5中正确配置 client_id 或值与AGC平台不一致。

证书指纹未同步:应用签名证书的公钥指纹未正确配置到AGC平台,或存在缓存未更新

证书类型不匹配:调试证书与发布证书的签名差异导致校验失败

解决步骤:

1/确认 module.json5 中 client_id 与AGC平台上的值完全一致(包括大小写)。

2/登录AGC平台,重新添加发布证书的公钥指纹(需从发布证书的.cer文件提取);确保设备网络正常,并等待至少半小时让AGC配置生效。

3/确保本地调试和发布构建时使用的证书类型(调试/发布)与AGC平台配置的指纹证书完全匹配

调用登录接口报错401

错误码 401 通常表示参数不合法

原因:

样式参数错误:登录按钮样式使用了不支持的 ICON 类

权限未申请:未在 module.json5 中声明必需的 scopes 或 permissions 权限

参数格式错误:params 中传入了空值或不符合规范的参数

解决步骤

1/使用 BUTTON_RED 或 BUTTON_WHITE 样式,避免使用 ICON 类样式。示例:

const params = {
  style: ButtonStyle.BUTTON_RED // 确保从官方枚举类型取值
};

2/在 module.json5 的 abilities 中声明以下权限:

"requestPermissions": [
  { "name": "ohos.permission.ACCOUNT_MANAGER" }, // 账号管理权限
  { "name": "ohos.permission.DISTRIBUTED_DATASYNC" } // 数据同步权限(若需要)
]

3/确保调用接口时传入完整的 client_id、scopes(如 “phone”),且参数值合法。例如:

const scopes = ["phone"]; // 需与AGC平台申请的权限一致
const authRequest = {
  scopes: scopes,
  forceLogin: true // 强制拉起授权页面(避免静默失败)
};

鸿蒙Next调试主要使用DevEco Studio进行。支持断点调试、日志查看和性能分析。调试工具基于ArkTS/ArkUI框架,提供实时预览和热重载功能。可通过USB连接真机调试,或使用模拟器进行应用测试。调试过程中可查看组件树状态及性能指标。

发布证书打包测试返回1001500001是正常现象,这通常表示证书尚未生效或配置未完全同步。新的调试证书配置后,该错误应不再出现。

关于401错误,这通常与身份验证相关,可能是由于以下原因:

  1. 调试证书未正确配置或未生效
  2. 应用签名或包名与AGC平台配置不匹配
  3. 接口调用参数或权限配置有误

建议检查AGC平台的应用配置,确保包名、签名证书指纹与调试环境一致,并确认接口调用参数符合文档要求。

回到顶部