代码之家  ›  专栏  ›  技术社区  ›  Rocé Tarentula

Google Play应用程序签名-密钥哈希不匹配

  •  36
  • Rocé Tarentula  · 技术社区  · 7 年前

    我在我的应用程序中集成了Facebook登录,它说keyhash无效。 我的APK的keyhash版本不同于Google Play应用程序签名过程中创建的keyhash版本。

    编辑:第一步:

    1) 创建了jks密钥库文件。

    2) 创建了一个用jks文件签名的apk版本。

    4) 一旦上线,我下载并打开应用程序,脸书初始化说:无效的密钥散列

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

      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) {
    
        }
    

    即使我把脸书上的hashkey放在脸书的仪表板上,它也不起作用。 你有办法解决这个问题吗?

    5 回复  |  直到 7 年前
        1
  •  75
  •   Neeraj Sewani    6 年前

    1). 转到谷歌控制台=> 发布管理 应用程序签名 => .

    2). 从那里复制SHA-1证书 既然脸书需要它 步骤3

    3). 回响 步骤2的SHA-1键(十六进制) |xxd-r-p | openssl base64
    命令提示符 windows上的bash .

    base64键 在里面 => 设置 => 密钥哈希

        2
  •  44
  •   Garvit Jain    6 年前

    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

        3
  •  36
  •   mole    7 年前

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

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

        4
  •  2
  •   The Billionaire Guy    3 年前

    上面的大多数答案都是正确的,但不是运行hash命令,而是有一个很好的工具来实现这一点,因此我将使用@neeraj的答案作为基本答案来重新说明这些步骤:

    步骤3是唯一更改的项目

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

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

    3). 去 https://base64.guru/converter/encode/hex

    4). 在Facebook控制台中粘贴base64键=>设置=>基本=>密钥哈希

        5
  •  -3
  •   SripadRaj    7 年前

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

    你必须遵循的步骤

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

    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应用程序控制台中。 .

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