【FAQ】推送获取 push token 报错 6003,如何排查?
一、问题现象
客户端调用 getToken 方法获取 push token 失败并报错,关键错误日志:com.huawei.hms.common. ApiException: 6003: certificate fingerprint error。
二、问题排查
6003 错误码在“常见错误码”说明文档中有说明:
检查申请相关服务时是否配置了正确的证书指纹:
1、打开应用的 APK,将其中“META-INF”文件夹解压出来,得到其中的“CERT.RSA”文件,通过 keytool -printcert -file META-INF/CERT.RSA 命令打印签名证书信息。
2、登录 AppGallery Connect,单击“我的项目”,选择需要操作项目,进入项目页面后选择应用,然后在“项目设置 > 常规”中检查“SHA256 证书指纹”配置的信息是否与上面命令行打印出来的指纹一致。
上面是 6003 错误码通常的排查方法,有些开发者是因为打包使用的签名证书指纹和 AGC 上配置的证书指纹不一致,有些开发者是因为变更了签名但是 HMS Core 还缓存有老的签名文件,才获取 token 失败并报 6003 错误码,通过上面通常的排查方法一般可以解决。
但是还有些开发者按照上面的方法排查后并不能解决问题,报 6003 错误码表示应用打包使用的签名文件对应的证书指纹和 AGC 上配置的证书指纹不一致,这个是没错的,需要抓取 logcat 日志查看下客户端实际验证使用的证书指纹。
日志抓取方法:
1、使用 adb 连上手机后,分别执行下面命令:
adb shell setprop log.tag.hwpush VERBOSEadb logcat -v threadtime 1> D:\hwpush.log
2、尝试复现遇到的问题场景。
3、等待几十秒,按快捷键“Ctrl+C”完成日志抓取
注:生成日志后注意看下日志记录的时间段需要包含复现问题的时间点。
查找关键日志:
搜索 check certFingerprint failed 关键字,找到如上图所示的日志。certFingerprint be checked is 后面是客户端的证书指纹,certFingerprint of 107 is 后面是 AGC 上配置的证书指纹,107 是对应应用的 appid,因为某种原因开发者打包使用的签名证书指纹不是配置到 AGC 上的证书指纹。开发者可以通过将客户端实际验证使用的证书指纹添加到 AGC 上解决问题。
评论