我正在使用新的Google Play应用签名来签名我的应用程序,但存在不匹配的密钥哈希。
我在我的应用程序中集成了Facebook登录,它说keyhash无效。我的APK的keyhash版本与Google Play应用签名过程创建的keyhash版本不同。
编辑:步骤我做了:
1)创建了一个jks密钥库文件。
2)创建了一个apk发行版,使用jks文件签名。
3)在Google Console Developer中导入APK,并订阅Google Play应用签名,修改签名密钥。
4)一旦上线,我下载并打开应用程序,Facebook初始化说:无效的密钥哈希
当我通过下面的代码检查应用程序中的hashkey时,hashkey与Facebook所说的无效hashkey不同:
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.package",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
字符串
即使我把Facebook说的hashkey在Facebook Jmeter 板,它不工作.似乎Google Play应用签名修改hashkey在签名过程中.你有一个想法来解决它?
6条答案
按热度按时间nxowjjhe1#
你必须使用谷歌生成的SHA-1密钥。以下步骤将修复它。
1).转到Google控制台=>您的项目=>设置=>应用程序完整性=>应用程序签名密钥证书。
2).从那里复制SHA-1证书,因为它是 * 十六进制 ,因为Facebook需要它在 base64,所以使用 * 步骤3 中显示的命令
3).echo * 来自步骤2的SHA-1密钥(十六进制)*| xxd -r -p| openssl base64
此命令在命令提示符下不起作用在windows上使用bash或git bash**。
4).粘贴 *base64密钥 * 在Facebook控制台=>设置=>基本=>密钥哈希
eyh26e7m2#
您可以使用下一个命令(可能在Git Bash上)将十六进制格式的SHA-1哈希(在Play控制台中找到)转换为base64哈希:
字符串
输出量:
型
例如,在设置Facebook应用程序时可以使用此哈希。Answer Source
q9yhzks03#
我有同样的问题,它似乎正如你所说,Google Play商店重新签署您的apk与一个新的关键,这是你必须提供给Facebook的关键哈希(不是使用keytool生成的).
这个答案的后半部分https://stackoverflow.com/a/44448437/2640599是有用的。
基本上,你需要向Facebook提供基于谷歌生成的SHA-1应用签名证书的哈希值,而不是使用keytool和你的本地密钥(现在似乎只是用于上传到谷歌)。
nr9pn0ug4#
上面的大多数答案都是正确的,但是有一个很好的工具来代替运行hash命令,所以我将使用@neeraj的答案作为基本答案重新陈述步骤:
步骤3是唯一更改的项目
你必须使用谷歌生成的SHA-1密钥。以下步骤将修复它。
1).转到Google控制台=> Release Management => App signing => App signing certificate。
2).从那里复制SHA-1证书,因为它是十六进制的,因为Facebook需要base64,所以使用第3步中显示的在线工具
3).到https://base64.guru/converter/encode/hex转换十六进制到base64
4).在Facebook控制台中粘贴base64密钥=>设置=>基本=>密钥哈希
sg3maiej5#
对我来说,这一切都不起作用。起作用的是以下步骤:
1.从Google Play控制台上的应用登录中下载DER文件。
keytool -importcert -file deployment_cert.der -keystore temporary.keystore -alias PlayDeploymentCert
1.修改com. yourrappid并运行:
keytool -exportcert -alias PlayDeploymentCert -keystore temporary.keystore| xxd -p| tr -d“[:space:]”|echo -n com. yourrappid
cat
| sha256sum| tr -d“[:space:]-”|xxd -r -p| base64|切割-c1-11kb5ga3dv6#
我猜您可能正在使用为
debug.keystore
生成的密钥散列。你必须遵循的步骤
1.为发布证书生成密钥哈希。
转到命令行并执行此命令。将
<*..*>
中的占位符替换为适当的值。字符串
此命令将生成密钥哈希。
2.复制上述命令生成的密钥哈希,并将其粘贴到Facebook应用控制台中,如this.
。
3.用你的jks签名apk。下载并安装到你的手机上进行测试。
试试这个,让我知道。一切顺利。:)