本次接入微信sdk的过程中,调起微信登录时返回值一直是errcode=-6,查阅资料之后发现是签名的问题,因为签名跟之前可以正常进行登录的包的签名用的是一个,所以开始虽然想到了可能是这方面的问题,不过因为疏忽没有去核对。
根据官网的说法是用自己的秘钥进行打包安装到手机上之后,使用官网提供的签名生成工具,生成填写在官网上的签名的值。但是因为在AndroidStudio中运行项目的时候如果没有给项目指定相应的秘钥的话,实际打出来的包用的是AndroidStudio中默认的秘钥。
官网上边需要填写的签名的值实际上是签名文件的MD5的值,这个值可以通过keytool -list -v -keystore 秘钥文件,这个命令获取,结果如下:
密钥库类型: jks
密钥库提供方: SUN
您的密钥库包含 1 个条目
别名: 9527
创建日期: 2017-9-11
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=mengjiangtao,OU=9527, O=9527, L=Bj, ST=100000, C=086
发布者: CN=mengjiangtao,OU=9527, O=9527, L=Bj, ST=100000, C=086
序列号: 4c93add5
有效期为 Mon Sep 1114:08:39 CST 2017 至 Fri Sep 05 14:08:39 CST 2042
证书指纹:
MD5: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
SHA1:CB:C7:09:62:2A:2D:D3:EB:50:A9:90:73:21:01:A7:B8:B2:53:43:5E
SHA256:F0:51:F0:AF:1E:4C:E0:7A:D9:79:07:CC:06:76:2F:E9:4B:BA:DE:A2:92:CF:FB:15:5C:7C:EF:3C:FF:82:E6:5C
签名算法名称: SHA256withRSA
主体公共密钥算法: 2048 位 RSA 密钥
版本: 3
扩展:
#1: ObjectId:2.5.29.14 Criticality=false
SubjectKeyIdentifier[
KeyIdentifier [
0000: 9F 5A 2178 4D B8 9F D4 15 82 E8 F5 C4 02 09C4 .Z!xM...........
0010: 52 C2 B974 R..t
]
]
*******************************************
*******************************************
Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore .\9527.jks -destkeystore.\9527.jks -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
这里要填写到开放平台的签名的值是这些数据之中的MD5的值(就是上边加粗且标红的值),现在微信开放平台的配置就ok了,打出包之后如果发现还有签名方面的问题,则将apk改名为zip文件并解压,解压之后的目录下有一个META_INF文件夹,在此文件夹下进入命令行(windows中按 Shift键右击选择当前目录进入命令行)执行命令keytool-printcert -file path,执行后结果如下:
所有者: CN=mengjiangtao,OU=9527, O=9527, L=Bj, ST=100000, C=086
发布者: CN=mengjiangtao,OU=9527, O=9527, L=Bj, ST=100000, C=086
序列号: 4c93add5
有效期为 Mon Sep 1114:08:39 CST 2017 至 Fri Sep 05 14:08:39 CST 2042
证书指纹:
MD5: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
SHA1:CB:C7:09:62:2A:2D:D3:EB:50:A9:90:73:21:01:A7:B8:B2:53:43:5E
SHA256:F0:51:F0:AF:1E:4C:E0:7A:D9:79:07:CC:06:76:2F:E9:4B:BA:DE:A2:92:CF:FB:15:5C:7C:EF:3C:FF:82:E6:5C
签名算法名称: SHA256withRSA
主体公共密钥算法: 2048 位 RSA 密钥
版本: 3
扩展:
#1: ObjectId:2.5.29.14 Criticality=false
SubjectKeyIdentifier[
KeyIdentifier [
0000: 9F 5A 2178 4D B8 9F D4 15 82 E8 F5 C4 02 09C4 .Z!xM...........
0010: 52 C2 B974 R..t
]
]
核对打出的apk中的MD5(加粗且标红)的值是否与微信开放平台一致,此次出现问题的原因便是因为打出的包中的MD5的值跟微信开放平台填写的值不一致,修改完之后可以正常运行。
注意:一定要保证自己使用的签名是正确的,如果出现签名问题,一定要确认自己打出的包的md5的值跟平台填写的一样,一定要核对,一定要核对,一定要核对,重要的事情说三遍。