[英]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 上使用bash或git 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.