1

我使用Android Studio創建了一個簽名的APK,並且我在我的應用中添加了Google Developer Console和Facebook控制檯我的SHA1指紋和相關API鍵。一切正常,如果我通過USB上傳我的簽名apk後,安裝地圖API和Facebook API後效果很好。如果我將相同的apk上傳到Play商店,那麼當我嘗試使用Facebook登錄時,它會顯示「無效的密鑰哈希。密鑰哈希blablabla與任何存儲的不匹配。」。 因此,如果我沒有臉書登錄,我甚至不能得到我的谷歌地圖;這導致我認爲在遊戲商店中加載的apk更改了他的指紋或類似的東西。 我檢查了Android開發人員和Stackoverflow上的所有內容,但我無法完成工作,因爲這個簽名版本的apk很好用,直到我將其加載到Play商店。Play Store上的已發佈應用無法與Google Maps API和Facebook API進行通信

+1

對於Facebook,您需要開發人員密鑰哈希和發佈密鑰哈希。看看這個鏈接:https://developers.facebook。com/docs/android/getting-started#release-key-hash –

+0

看看我的谷歌地圖的答案。您需要更改由Google Play生成的SHA-1,請在您的播放控制檯中找到新的SHA-1,並將其上傳到您的谷歌地圖API中,並且它像一個魅力。 –

+0

您使用的是Firebase嗎? – Gopal

回答

0

我終於解決了,可能是由API提供的文件google_maps_api.xml不是在釋放加載的問題,所以我

我不喜歡說:

buildTypes { 
    debug { 
     manifestPlaceholders = [mapsKey: "AIzaSyB8o9KzQ5YN8U8AFS************"] 
    } 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     manifestPlaceholders = [mapsKey: "AIzaSyApLacqgkdIR7uEpcf*****************"] 
    } 
} 

,然後在我AndroidManifest

<meta-data 
     android:name="com.google.android.geo.API_KEY" 
     android:value="${mapsKey}" /> 

參考:https://stackoverflow.com/a/33917692/3235560

然後我註冊的每個2個不同的密鑰與正確的SHA1指紋,一個調試和其他由谷歌給出的播放控制檯(未上傳證書,但對方一個由谷歌生成)。

非常感謝Zuhad和Andy Developer的靈感。

0

您的應用程序的調試和發佈構建類型使用兩個不同的鍵簽名。

您需要註冊在谷歌地圖和Facebook這兩個鍵他們,讓他們的服務

+1

這就是我所做的。我也從Play商店控制檯下載了部署證書,並執行了以下命令:'cat deployment_cert.der | openssl sha1 -binary | openssl base64' 它給了我現在可以工作的Facebook登錄的api密鑰,但是我無法讓Google Maps工作。 在/app/src/release/res/values/google_maps_api.xml文件中,我添加了從地圖控制檯提供的密鑰,其中我還註冊了自己的證書(從android studio生成)中的sha1指紋和sha1指紋來自Play商店控制檯,但它不起作用 – exrezzo

+0

您的調試版本是否使用與發佈版本不同的applicationId /包?根據這你可能不得不添加另一個條目在谷歌地圖API鍵配置 –

+0

上午生成調試API密鑰其working.when我集成SIGNAPAPI鍵發佈它也沒有工作請幫助我。生成signes apk後,再次生成簽名谷歌將api密鑰與簽名密鑰庫文件和別名映射。 – Harsha

0

是的,很明顯,地圖將不會簽署APK加載訪問。

解決方案:

當您生成在谷歌API控制檯的API密鑰,你需要限制使用SHA密鑰的密鑰

但生成簽名APK後,你需要採取釋放模式SHA密鑰,並添加API控制檯對我重視形象API enter image description here

,看看

希望它幫助。

+0

的事情是,爲調試和發佈的API密鑰是不同的,其實我在gradle這個文件'buildTypes { 調試{ manifestPlaceholders =寫道[google_map_key: 「AIzaSyB8o9KzQ5YN8U8AFSxbTJLheFiubF ****」] } 發佈{ minifyEnabled假 proguardFiles getDefaultProguardFile( 'proguard的-android.txt'), 'proguard-rules.pro' manifestPlaceholders = [google_map_key: 「AIzaSyApLacqgkdIR7uEpcf7EDuGvsQlgh *****」] signingConfig signingConfigs.config }' – exrezzo

+0

即使我添加像你說每個關鍵的調試sha1和釋放sha1它都不起作用 – exrezzo

+0

更好地創建一個新的API密鑰並嘗試實現, 只有API密鑰是我希望的解決方案 – Zuhad

0

爲Facebook生成散列鍵使用下面的代碼:

try { 
     PackageInfo info = getPackageManager().getPackageInfo(
       "YOUR PACKAGE NAME", 
       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的開發者控制檯一樣,繼續向前邁進

希望它能幫助:)

18

下面是爲什麼你看不到谷歌地圖的答案。

我最近在谷歌Play商店上傳了APK,在檢查Play Console後我遇到了同樣的問題,我找到了解決這個問題的解決方案。

他們對您的密鑰沒問題,但問題在於您的SHA-1。你用你的SHA-1簽了你的APK,這很好,然後上傳APK也很好。

但根據Play Console的新更新,當您使用SHA-1簽名APK並上傳APK時,它只會由您簽名,但根據新更新,它也會由Google Play簽名以提高安全性。查看Google Play部分內容:

使用Google Play應用簽名:您可以使用上傳密鑰對應用進行簽名。 然後,Google會驗證並移除上傳密鑰簽名。最後, Google會使用您提供的原始應用簽名密鑰 重新簽署該應用,並將您的應用交付給用戶。

你可以參考Documentation here.

現在,你的問題是在成功上傳APK的答案,你可以看到,在部分設有兩張SHA-1 1 SHA-1是谷歌創建其自己和第二個SHA-1是它的你的

因此,只需複製Google SHA-1並將其粘貼到您生成Google Map API密鑰的控制檯。

+3

謝謝!我試圖解決這個問題已經3天了。雖然有很多答案要求改變sha1鍵,但這個答案清晰明瞭。謝謝你的幫助。 – user669444

+0

@ user669444歡迎先生:) –

+1

@AndyDeveloper謝謝你......真的是你救了我。我從字面上從Firebase和Google Console中刪除了我的項目,然後重新創建並重新配置它,但這沒有任何區別。加熱到你的答案。 –

5

靈感來自@Andy Developer,我可以在我的應用上傳到Google Play後顯示地圖。這些是步驟:

  1. 上傳應用程序到谷歌播放(簽署APK文件)
  2. 應用程序已經提交併獲得批准後,從Google Play Console
  3. 轉到您的應用程序開發工具 - >發佈管理 - >應用簽約

App Signing in Google Play Console

  1. 複製Google Play在上傳應用後發佈的第一個SHA-1證書。
  2. 轉到Google Console並選擇您的項目。
  3. 選擇您的API密鑰,限制您的密鑰,然後粘貼包名稱後的SHA-1。

Paste SHA-1 into Google Console

  • 保存,請等待分鐘的。並且您的應用應顯示Google地圖。
  • 相關問題