簡體   English   中英

com.google.android.gms.common.api.ApiException: 12500

[英]com.google.android.gms.common.api.ApiException: 12500

這是我的第一次嘗試.... 試圖找到過去 2 天的問題。 我正在嘗試將 google 登錄集成到 android 應用程序,但是如下:com.google.android.gms.common.api.ApiException: 12500

遵循以下代碼: https : //firebase.google.com/docs/auth/android/google-signin

  • 確保開發控制台中存在 oauth 客戶端 ID,並按照其他帖子中的建議使用來自 ~/.android/debug.keystore 的正確 SHA-1 指紋。

  • 在應用程序級別使用最新的播放服務 49 和 build.gradle:實現 'com.google.android.gms:play-services-auth:16.0.1'

  • 在項目級別 build.gradle 中使用以下內容:

buildscript { // ... 依賴項 { // ... classpath 'com.google.gms:google-services:4.1.0' // google-services 插件 } }

 public class SignUpActivity extends AppCompatActivity { private GoogleSignInClient gsc; private FirebaseAuth firebaseAuth; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_signup); GoogleSignInOptions gso = new GoogleSignInOptions .Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(String.valueOf(R.string.gplus_api_client_id)) .requestEmail() .build(); gsc = GoogleSignIn.getClient(this, gso); //Initialize firebase authentication firebaseAuth = FirebaseAuth.getInstance(); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...); if (requestCode == RC_SIGN_IN) { // The Task returned from this call is always completed, no need to attach // a listener. Task < GoogleSignInAccount > task = GoogleSignIn.getSignedInAccountFromIntent(data); handleSignInResult(task); } } private void handleSignInResult(Task < GoogleSignInAccount > completedTask) { try { //Sign in Successful GoogleSignInAccount account = completedTask.getResult(ApiException.class); Log.w("SignUpActivity/handleSignInResult", "Trying signing in with Google... " + account); firebaseAuthWithGoogle(account); // Signed in successfully, show authenticated UI. // Log.w("SignUpActivity/handleSignInResult", "Google sign in successful for account " + account); } catch (ApiException e) { // The ApiException status code indicates the detailed failure reason. // Please refer to the GoogleSignInStatusCodes class reference for more information. Log.w("SignUpActivity/handleSignInResult", "Google sign in failed with exception: " + e); } } private void firebaseAuthWithGoogle(GoogleSignInAccount account) { Log.i("SignUpActivity/firebaseAuthWithGoogle", "Signed in as : " + account.getId()); AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null); firebaseAuth.signInWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener < AuthResult > () { @Override public void onComplete(@NonNull Task < AuthResult > task) { if (task.isSuccessful()) { FirebaseUser user = firebaseAuth.getCurrentUser(); Log.i("SignUpActivity/firebaseAuthWithGoogle", "Sign in successful for user : " + user); } else { Log.e("SignUpActivity/firebaseAuthWithGoogle", "User Authentication failed."); Snackbar.make(findViewById(R.id.view_signup), "Authentication failed.", Snackbar.LENGTH_SHORT); } } }); } }

我有這個問題。 並且已經解決了。 SHA1 debug 和 relase 都已添加到 Firebase 控制台,但仍然無法正常工作。 此外,我嘗試只進行 SHA1 調試,但仍然無效。 經過如此多的嘗試和錯誤,我通過完成憑據菜單中的“oAuth同意屏幕”信息解決了這個問題,以下是步驟:

  1. 登錄 Google Console Cloud
  2. 選擇與當前 Firebase 項目相關的當前項目
  3. 導航到 API 和服務
  4. 單擊憑據菜單
  5. 點擊“oAuth同意屏幕”
  6. 添加應用程序徽標、應用程序主頁鏈接和應用程序隱私政策鏈接。 要添加這兩個鏈接,您只需從“oAuth 同意屏幕”中的“授權域”部分復制並粘貼,例如:your-app-abc123.firebaseapp.com

按照谷歌開發人員文檔,在那里清楚地給出了如何將谷歌登錄集成到Android應用程序的逐步說明。

https://developers.google.com/identity/sign-in/android/start重要

  1. 檢查您是否在 google 控制台中啟用了 Google plus API。
  2. 將您的項目配置為 Google sing in 后,它應該連接到 Firebase。 您只想在 firebase 上選擇您的項目。
  3. 將 JSON 文件包含到您的項目資源管理器中。
  4. YOUR_SERVER_CLIENT_ID檢查您是否提供了正確的服務器客戶端 ID。

基本上,問題出在控制台上的SHA1密鑰中,請重新生成它並再次正確放置相同的項目。

1)作為答案,請確保您實際簽名的 Android apk 具有與您在 Firebase 項目的 Android 集成部分(您可以下載google-services.json的頁面)的控制台中指定的相同的 SHA1 指紋

2)最重要的是轉到您的firebase項目的設置(左上角區域概述右側的齒輪圖標。然后切換到帳戶鏈接選項卡。在該選項卡上將Google Play鏈接到您的項目。

我為同樣的錯誤 12500 苦苦掙扎了幾個小時。 顯然,您需要在此頁面https://console.developers.google.com/apis/credentials上的 OAuth 同意屏幕選項卡上填寫所有必需的信息(應用程序名稱、徽標、電子郵件、授權域)

如果嘗試了以上方法后仍然無法登錄,您也可以嘗試在真機上運行代碼。 我花了兩天時間嘗試使用 android studio 模擬器登錄。 如果您在真實設備上成功登錄,那么您需要在模擬器上更新 google play 服務。

我正在使用Android模擬器搜索此錯誤的解決方案。我嘗試的方法如下:

  1. 創建 SHA1 證書。
  2. 通過添加應用程序徽標和支持電子郵件更新了 oAuthConsent 屏幕。

但是,直到我從 android 模擬器切換到物理 android 設備時,上述方法才起作用 希望這個答案可以幫助某人。

  • 快樂學習!

我現在遇到了同樣的問題。 經過一些調試,我發現我錯過了在身份驗證下啟用谷歌登錄方法。 啟用后,它工作正常。

對於誰在這個問題中結束,我確定你現在正在拉頭發並一直在想為什么它仍然不起作用。 讓我分享一下對我有用的東西。

在你完成下面的所有這些之后,但仍然沒有得到它的工作(得到所有強大的 12500 錯誤):

  1. 檢查 Firebase 項目設置中的調試 SHA-1 密鑰
  2. 在您的項目中更新了您的 google-service.json
  3. 在 Firebase 項目中更新了您的支持電子郵件
  4. 在 Google API 控制台的 Oath2 同意頁面中更新了您的隱私鏈接、服務條款鏈接、應用程序徽標
  5. 在您的 Android 物理設備上運行

所以:

所以基本上在您的 Google API 控制台中,您將擁有 2 個 OAuth 2.0 客戶端 ID。 您將在這里有 2 個項目。 當你點擊里面時,一個將有 URI,為你設置了your-project.firebaseapp.com (名稱是Web 客戶端(由 Google 服務自動創建) )。 不要使用那個,而是你另一個,它沒有為你設置任何 URI(名稱是Web 客戶端(由 Google 登錄自動創建) )。 出於某種原因,使用第二個選項WORKS

希望能幫到你。 享受

如果您收到平台異常和此 com.google.android.gms.common.api.ApiException: 12500 那么別擔心,請點擊此鏈接我希望您的問題得到解決。

腳步:-

  1. 刪除 debug.keystore 文件。 該文件存儲在 Windows 上的 C:\\Documents and Settings<user>.android\\

  2. 首先從您的 IDE 運行您的應用程序

  3. 使用此命令生成一個新的 debug.keystore 文件, keytool -list -v -keystore "%USERPROFILE%.android\\debug.keystore" -alias androiddebugkey -storepass android -keypass android 此處 USERPROFILE 表示您的 PC 用戶名

  4. 在 Firebase 控制台中更新您的 SHA 1

  5. 下載 google_service.json 文件的更新版本

參考使用此鏈接, https://github.com/flutter/flutter/issues/25640#issuecomment-449589417

暫無
暫無

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

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