Google Play App签名 - 密钥哈希不匹配

问题描述 投票:10回答:4

我使用新的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初始化说:无效密钥哈希

当我通过下面的代码检查应用程序中的hashkey时,哈希键与Facebook所说的无效哈希键不同:

  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。你有想法解决它吗?

android facebook signing
4个回答
21
投票

我有同样的问题,看起来正如你所说,Google Play商店用新密钥重新签名你的apk,这就是你必须提供给Facebook作为密钥哈希(不是使用keytool生成的密钥)。

这个答案https://stackoverflow.com/a/44448437/2640599的后半部分很有用。

基本上你需要为Facebook提供基于谷歌生成的SHA-1应用程序签名证书的哈希值,而不是使用keytool和你的本地密钥(它似乎现在只用于上传到谷歌)。


23
投票

您必须使用Google生成的SHA-1密钥。以下步骤将解决它。

1)。转到Google控制台=>发布管理=>应用程序签名=>应用程序签名证书。

2)。从那里复制SHA-1证书,因为它是十六进制的,因为Facebook需要它在base64中,所以使用步骤3中显示的命令

3).echo SHA-1键来自步骤2(十六进制)| xxd -r -p | openssl base64 此命令在命令提示符下无法在windows或git cli上使用bash。

4)。将base64键粘贴到Facebook控制台=>设置=>基本=>键哈希


5
投票

您可以使用下一个命令(可能是Git Bash)将十六进制格式的SHA-1哈希(在Play控制台中找到)转换为base64哈希:

echo 33:4E:48:84:19:50:3A:1F:63:A6:0F:F6:A1:C2:31:E5:01:38:55:2E | xxd -r -p | openssl base64

输出:

M05IhBlQOh9jpg/2ocIx5QE4VS4=

例如,在设置Facebook应用程序时可以使用此哈希。 Answer Source


0
投票

我猜你可能正在使用为debug.keystore生成的密钥哈希。

你必须遵循的步骤

1.生成发布证书的密钥哈希。

转到命令行并执行此命令。用适当的值替换<*..*>中的占位符。

keytool -exportcert -alias <*provide an alias here. I recommend to use the same alias that you use for google play app signing*> -keystore _<*your path to the jks certificate*> | openssl sha1 -binary | openssl base64

此命令将生成密钥哈希。

2.复制上面命令生成的密钥哈希并将其粘贴到您的Facebook应用程序控制台中,如this.

3.用你的jks标记apk。下载并安装在手机上进行测试。

试试这个让我知道。祝一切顺利。 :)

© www.soinside.com 2019 - 2024. All rights reserved.