一、问题现象

客户端调用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 VERBOSE
adb 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上解决问题。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐