做微信登录或者分享功能的兄弟,估计都被“应用签名”这玩意儿折磨过。官方文档写得那是真简洁,简洁到让人想摔键盘。你按着做,结果就是“签名错误”或者“无效签名”。今天我不讲那些虚头巴脑的理论,直接说怎么解决。我带过不少实习生,十有八九都栽在这上面。
先说核心逻辑。微信怎么知道是你?靠的是包名和签名的组合。包名是你AndroidManifest里定的那个唯一ID,签名则是你APK的数字指纹。这两个东西必须和你在微信开放平台后台填的一模一样,差一个字符都不行。很多人搞不定,是因为根本不知道自己的签名到底是啥,或者填错了环境。
第一步,拿到正确的SHA1值。这是最关键的一步。别去网上随便下个签名生成器,那玩意儿要么过时要么带毒。最稳妥的办法是用Android Studio自带的命令行工具。打开终端,找到你的JDK安装目录下的keytool。命令大概是这样的:keytool -list -v -keystore 你的keystore文件路径。这时候它会让你输入密钥库密码,输对之后,往下翻,找到SHA1那一行。注意,一定要复制完整的一串字符,中间没有空格,全是十六进制数字。
这里有个大坑,很多人混淆了Debug签名和Release签名。Debug签名是你开发时自动生成的,每次重装可能都不一样;Release签名是你打包上线用的,必须固定。你在微信后台填的,必须是Release包对应的SHA1。如果你用Debug包去测,那肯定报错。除非你在微信后台专门加了一个Debug签名的配置,但这通常不推荐,因为容易搞混。
第二步,检查包名是否一致。这个包名就是你的Application ID。去你的build.gradle文件里看一眼,确保和微信开放平台后台填写的包名完全一致,包括大小写。有些同学喜欢复制粘贴,结果不小心多打了个空格,或者把全角符号混进去了,这种低级错误真的不少见。
第三步,安装微信客户端并配置。别以为填完参数就完事了。你需要在手机上安装微信,并且用同一个微信账号登录。然后,在微信开放平台后台,点击“提交审核”之前,先点击“下载签名工具”。这个工具会读取你手机上的微信包名和签名,生成一个二维码或者显示一串代码。把这个代码和你后台填的进行比对。如果一致,说明配置没问题。如果不一致,那就是前面两步出了岔子。
真实案例分享。有个朋友做电商小程序,微信分享一直失败。排查半天,发现他用了多渠道打包,每个渠道的包名虽然一样,但签名文件不同。他在后台只填了一个签名,结果只有那个签名对应的渠道能分享,其他渠道全部报错。解决办法很简单,要么统一签名,要么在后台把所有渠道的签名都加上。
还有一种情况,是SHA1值的大小写问题。虽然SHA1通常是大写,但有些工具输出的是小写。微信后台一般不区分大小写,但为了保险起见,建议统一用大写。另外,有些老旧的签名工具生成的SHA1格式不对,比如中间加了冒号,复制的时候把冒号也带进去了,那肯定不行。
最后,总结一下。别迷信第三方工具,最靠谱的还是自己用keytool命令。确保包名、SHA1、签名文件三者对应。如果还是不行,检查手机上的微信是不是最新版,有时候微信版本的bug也会导致签名校验失败。记住,微信开放平台应用签名不是玄学,就是简单的字符串匹配。耐心点,一步步排查,总能搞定。
本文关键词:微信开放平台应用签名