簡體   English   中英

Google Play 應用簽名 - KeyHash 不匹配

[英]Google Play App Signing - KeyHash Mismatch

我正在使用新的 Google Play App Signing 來簽署我的應用程序,但存在不匹配的密鑰哈希。

我在我的應用程序中集成了 Facebook 登錄,它說密鑰哈希無效。 我的 APK 的 keyhash 版本與 Google Play App Signing 過程創建的 keyhash 版本不同。

編輯:我做的步驟:

1) 創建了一個 jks 密鑰庫文件。

2) 創建了一個用 jks 文件簽名的 apk 版本。

3) 在 Google Console Developer 中導入 APK,訂閱 Google Play App Signing 修改簽名密鑰。

4)上線后,我下載並打開應用程序,Facebook初始化說:無效的密鑰哈希

當我通過下面的代碼檢查應用程序中的哈希鍵時,哈希鍵與 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 所說的哈希鍵放在 Facebook 儀表板中,它也不起作用。 似乎 Google Play App Signing 在簽名過程中修改了哈希鍵。 你有解決它的想法嗎?

您必須使用 Google 生成的 SHA-1 密鑰。 以下步驟將修復它。

1)。 轉到 Google 控制台 =>發布管理=>應用簽名=>應用簽名證書

2)。 從那里復制 SHA-1 證書,因為它是十六進制的,因為 Facebook 需要它在base64 中,所以使用步驟 3 中顯示的命令

3)。 從第 2 步(十六進制)回顯SHA-1 密鑰| xxd -r -p | openssl base64
此命令在命令提示符下不起作用,請在 windows 上使用bashgit cli

4)。 base64 密鑰粘貼到Facebook 控制台=>設置=>基本=>密鑰哈希

您可以使用下一個命令(在 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 應用程序時使用此哈希。 答案來源

我遇到了同樣的問題,正如您所說,Google Play 商店使用新密鑰重新簽署您的 apk,這是您必須向 Facebook 提供的密鑰哈希(而不是使用 keytool 生成的哈希)。

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

基本上,您需要根據 Google 生成的 SHA-1 應用簽名證書向 Facebook 提供哈希,而不是使用 keytool 和您的本地密鑰(現在似乎只是用於上傳到 Google)。

上面的大多數答案都是正確的,但不是運行 hash 命令,而是有一個很好的工具,所以我將使用@neeraj 的答案作為基本答案重新說明這些步驟:

第 3 步是唯一更改的項目

您必須使用 Google 生成的 SHA-1 密鑰。 以下步驟將修復它。

1)。 轉到 Google 控制台 => 發布管理 => 應用簽名 => 應用簽名證書。

2)。 從那里復制 SHA-1 證書,因為它是十六進制的,因為 Facebook 需要它在 base64 中,所以使用步驟 3 中顯示的在線工具

3)。 轉到https://base64.guru/converter/encode/hex將十六進制轉換為 base64

4)。 將 base64 密鑰粘貼到 Facebook 控制台 => 設置 => 基本 => 密鑰哈希

我猜您可能正在使用為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 應用程序控制台中。 .

3.用你的jks簽署apk。 下載並安裝到您的手機上進行測試。

試試這個,讓我知道。 一切順利。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM