【发布时间】:2017-12-01 13:48:56
【问题描述】:
我正在使用新的 Google Play 应用签名来签署我的应用程序,但密钥哈希不匹配。
我在我的应用程序中集成了 Facebook 登录,它说 keyhash 无效。 我的 APK 的 keyhash 版本与 Google Play App Signing 过程创建的 keyhash 版本不同。
编辑:我做的步骤:
1) 创建了一个 jks 密钥库文件。
2) 创建了一个使用 jks 文件签名的 apk 版本。
3) 在 Google Console Developer 中导入 APK,订阅 Google Play App Signing 修改签名密钥。
4) 上线后,我下载并打开应用程序,Facebook 初始化提示:Invalid Key hash
当我通过下面的代码检查应用程序中的 hashkey 时,hash key 与 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 仪表板中,它也不起作用。 Google Play App Signing 似乎在签名过程中修改了 hashkey。 你有解决办法吗?
【问题讨论】:
-
您应该使用单独的密钥散列进行生产,这可以使用您的发布密钥库文件生成。 :)
-
事实上,我首先使用 .jks 文件通过 android studio 签署我的应用程序以进行生产。它创建了一个我在 Google Play 控制台中导入的 APK 版本。我没有看到我错过了什么。
-
我的意思是,您必须使用发布密钥库文件生成 facebook api 密钥,就像您获取调试证书的 api 密钥一样。
-
是的,这就是我所做的,但是生成的密钥哈希值在谷歌签名前后的 apk 之间是不同的。
-
你能提供你做的步骤吗?你可以在你的问题中发布它吗?我很难想象你面临的问题。