我使用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進行通信
回答
我終於解決了,可能是由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的靈感。
您的應用程序的調試和發佈構建類型使用兩個不同的鍵簽名。
您需要註冊在谷歌地圖和Facebook這兩個鍵他們,讓他們的服務
這就是我所做的。我也從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
您的調試版本是否使用與發佈版本不同的applicationId /包?根據這你可能不得不添加另一個條目在谷歌地圖API鍵配置 –
上午生成調試API密鑰其working.when我集成SIGNAPAPI鍵發佈它也沒有工作請幫助我。生成signes apk後,再次生成簽名谷歌將api密鑰與簽名密鑰庫文件和別名映射。 – Harsha
是的,很明顯,地圖將不會簽署APK加載訪問。
解決方案:
當您生成在谷歌API控制檯的API密鑰,你需要限制使用SHA密鑰的密鑰
但生成簽名APK後,你需要採取釋放模式SHA密鑰,並添加API控制檯對我重視形象API
,看看
希望它幫助。
的事情是,爲調試和發佈的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
即使我添加像你說每個關鍵的調試sha1和釋放sha1它都不起作用 – exrezzo
更好地創建一個新的API密鑰並嘗試實現, 只有API密鑰是我希望的解決方案 – Zuhad
爲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的開發者控制檯一樣,繼續向前邁進
希望它能幫助:)
下面是爲什麼你看不到谷歌地圖的答案。
我最近在谷歌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天了。雖然有很多答案要求改變sha1鍵,但這個答案清晰明瞭。謝謝你的幫助。 – user669444
@ user669444歡迎先生:) –
@AndyDeveloper謝謝你......真的是你救了我。我從字面上從Firebase和Google Console中刪除了我的項目,然後重新創建並重新配置它,但這沒有任何區別。加熱到你的答案。 –
靈感來自@Andy Developer,我可以在我的應用上傳到Google Play後顯示地圖。這些是步驟:
- 上傳應用程序到谷歌播放(簽署APK文件)
- 應用程序已經提交併獲得批准後,從Google Play Console
- 轉到您的應用程序開發工具 - >發佈管理 - >應用簽約
- 複製Google Play在上傳應用後發佈的第一個SHA-1證書。
- 轉到Google Console並選擇您的項目。
- 選擇您的API密鑰,限制您的密鑰,然後粘貼包名稱後的SHA-1。
- 按保存,請等待分鐘的。並且您的應用應顯示Google地圖。
- 1. 上傳到Play商店時Google Maps API密鑰無法使用
- 2. php - Google Play Store API for Games
- 3. Google Maps API與Google Maps Engine?
- 4. 在Apple Store和Google Play發佈
- 5. Sharekit API:無法發佈在Facebook牆上
- 6. Google Maps API v2無法使用發佈密鑰
- 7. Google maps API無法加載?
- 8. Google Maps Android v1 API已棄用,獲取用於發佈的API密鑰
- 9. 通過Facebook API發佈招聘信息
- 10. Google Maps API V2 google-play-services_lib.jar丟失
- 11. getMap無法運行 - Google Maps API v3
- 12. 我應該使用哪種Google Maps API密鑰進行開發?
- 13. 無法在Google API控制檯上激活Google Maps Android API v2
- 14. 在沒有Google Play的設備上使用Google Maps API v2
- 15. Google Maps API Ver2已退役?
- 16. 已發佈到Google Play但無法使用Google語音操作的應用
- 17. 在Google Maps API上顯示信息
- 18. zombie.js和Google Maps API
- 19. Google Maps API和GeoJSON
- 20. Google Maps API和IE6
- 21. disableAutoPan無法使用Google Maps API v3
- 22. Google Maps API密鑰無法使用
- 23. Google Maps API無法使用撇號?
- 24. 在發佈應用程序時無法訪問Google Play遊戲API
- 25. Google Maps API密鑰與已簽名的apk一起使用,但在發佈後無法使用
- 26. 無法看到Google Maps API的使用情況統計信息
- 27. Facebook的API:無法與Facebook
- 28. 在google上發佈付費應用play
- 29. Facebook API發佈搜索已棄用?
- 30. Play Framework Java 2.2 Google Maps Places API
對於Facebook,您需要開發人員密鑰哈希和發佈密鑰哈希。看看這個鏈接:https://developers.facebook。com/docs/android/getting-started#release-key-hash –
看看我的谷歌地圖的答案。您需要更改由Google Play生成的SHA-1,請在您的播放控制檯中找到新的SHA-1,並將其上傳到您的谷歌地圖API中,並且它像一個魅力。 –
您使用的是Firebase嗎? – Gopal