集成Facebook登录时签名APK出现密钥哈希不匹配问题求助
这种情况大概率是Google Play App Signing在搞鬼——现在Google默认会对发布到Play Store的应用重新签名,你自己用发布版.jks生成的密钥哈希已经不是应用实际使用的签名密钥了,所以Facebook控制台里的哈希和实际应用的不匹配,就会弹出那个陌生的哈希提示。
下面是具体的解决步骤:
获取Google Play的实际签名SHA-1
打开Google Play控制台,找到你的应用,进入Release > Setup > App signing页面。在App signing key certificate板块下,复制对应的SHA-1 fingerprint(格式是一串带冒号的十六进制字符,比如AA:BB:CC:DD:...)。将SHA-1转换为Facebook需要的Base64密钥哈希
把复制的SHA-1去掉所有冒号,得到一串连续的十六进制字符串(比如AABBCCDDEEFF...),然后用以下命令转换:echo -n "你的无冒号SHA-1字符串" | xxd -r -p | base64执行后得到的结果就是Facebook需要的密钥哈希,把这个值添加到你的Facebook开发者控制台的应用设置里。
验证本地发布版密钥哈希的正确性(可选)
如果你是直接安装本地签名的APK测试(不是从Play Store下载的),要确保你生成哈希的命令正确:keytool -exportcert -alias 你的密钥别名 -keystore 你的发布版.jks路径 | openssl sha1 -binary | openssl base64输入密钥库密码后得到的哈希要和你添加到Facebook控制台的一致。
清理缓存并重新测试
添加完正确的密钥哈希后,先清除Facebook应用的缓存(如果是用Facebook客户端登录的话),然后重新安装你的应用(从Play Store下载的话要等更新生效),再尝试登录。
另外,那个陌生的哈希其实就是Google Play重新签名后应用使用的签名密钥生成的哈希,所以只要把转换后的哈希添加到Facebook控制台,就能解决这个问题了。
内容的提问来源于stack exchange,提问作者Shrikant Devarmani

