HarmonyOS鸿蒙Next调试相关问题
HarmonyOS鸿蒙Next调试相关问题 1.发布证书打包测试还是返回1001500001是否正常?
2.新的调试证书配置好后不会再出现1001500001,但现在完全按照文档上的请求去调用两种登录接口(createAuthorizationWithHuaweiIDRequest,createLoginWithHuaweiIDRequest)会都报错401
【背景知识】 应用接入华为账号,按照开发文档接入华为账号一键登录后,华为账号无法登录或者登录报错。 华为账号服务其他常见错误码如下:
错误码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的含义为应用指纹证书验证失败,可能原因:应用的指纹证书未配置或配置错误。 排查定位思路:
- 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。
- 检查应用的签名证书指纹是否配置正确,可以按照文档里面的添加公钥指纹,检查应用签名。参考文档:(配置应用签名证书指纹)。 错误示例1、AGC上面根本就没有添加公钥指纹。 错误示例2、AGC上面直接添加证书指纹,这个是错误的,在HarmonyOS API 9及以上需要添加公钥指纹。 错误示例3、本地工程里面配置的证书和AGC上面应用的SHA256证书/公钥指纹上面的证书不是同一套。
- File -> Project Structure… -> Project -> Signing Configs界面,不能勾选“Automatically generate signature”进行自动签名,需要手动配置签名。 可以按照开发准备里面的说明配置:配置签名信息。
- 网络问题,可以看下设备网络是否有问题,可以换个网络,比如切换到移动网络或者WIFI下面再试下是否OK。
- 在AGC上面,添加公钥指纹(HarmonyOS API 9及以上)后,指纹有一定时间的缓存,不会立刻生效,建议配置完成后等半小时再尝试。
- 检查下您的手机是否有修改系统时间,这个不建议修改。
上述步骤排查完成后,还是没有发现问题,可以再做下面的排查:
安装应用后执行(Windows):
安装应用后执行(Mac):hdc shell bm dump -n 包名 | findstr appId
将“appId”中包名下划线后的字符串拷贝到新文件中(文件名可自行定义,例如SHA.txt)再执行下面的命令行即可得到公钥指纹再与AGC上面配置的对比下看是否一致。hdc shell bm dump -n 包名 | grep appId
对比出来的appId不一致的话,需要重新申请公钥指纹证书配置应用签名指纹证书。certutil -hashfile F:\\SHA.txt SHA256
二、如果提示出现如下报错为参数错误,可以看下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
发布证书打包测试返回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错误,这通常与身份验证相关,可能是由于以下原因:
- 调试证书未正确配置或未生效
- 应用签名或包名与AGC平台配置不匹配
- 接口调用参数或权限配置有误
建议检查AGC平台的应用配置,确保包名、签名证书指纹与调试环境一致,并确认接口调用参数符合文档要求。