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

Posted

技术标签:

【中文标题】com.google.android.gms.common.api.ApiException:12500【英文标题】:com.google.android.gms.common.api.ApiException: 12500 【发布时间】:2019-03-18 00:23:01 【问题描述】:

这是我的第一次尝试....试图找到过去 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 // ... 依赖项 // ... 类路径 '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);
          
        
      );
  

【问题讨论】:

***.com/questions/47632035/google-sign-in-error-12500 昨天已经关注这些...确保在 build.gradle 中更新了当前版本的 auth api 和 firebase,使用正确的 sha1 密钥设置了 clientid 【参考方案1】:

我有这个问题。并且已经解决了。 SHA1 调试和发布都已添加到 Firebase 控制台,但仍然无法正常工作。此外,我尝试只进行 SHA1 调试,但仍然无法正常工作。经过这么多尝试和错误,我通过完成凭据菜单中的“oAuth同意屏幕”信息解决了这个问题,步骤如下:

    登录 Google Console Cloud 选择与当前 Firebase 项目相关的当前项目 导航到 API 和服务 点击凭据菜单 点击“oAuth 同意屏幕” 添加应用程序徽标、应用程序主页链接和应用程序隐私政策链接。要添加这两个链接,您只需从“oAuth 同意屏幕”的授权域部分复制和粘贴,例如:your-app-abc123.firebaseapp.com

【讨论】:

我的英雄!让我免于 2 天的头部撞击。 如果我没有网络应用怎么办?【参考方案2】:

按照谷歌开发者文档,其中明确给出一步一步的说明 如何将 google 登录集成到 Android 应用中。

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

    检查您是否已在 google 控制台中启用 Google plus API。 在将您的项目配置到 Google sing 中后,它应该连接到 Firebase。您只想在 firebase 上选择您的项目。 将 JSON 文件包含到您的项目浏览器中。 YOUR_SERVER_CLIENT_ID 检查您是否提供了正确的服务器客户端 ID。

【讨论】:

【参考方案3】:

我为同样的错误 12500 苦苦挣扎了好几个小时。 显然您需要在此页面上填写所有必需的信息(应用名称、徽标、电子邮件、授权域) https://console.developers.google.com/apis/credentials 在 OAuth 同意屏幕选项卡上

【讨论】:

【参考方案4】:

基本上,问题出在控制台上的SHA1 键上,请重新生成它并再次正确放置相同的项目。

1)作为答案,请确保您实际签名的 Android apk 具有与您在 Firebase 项目的 Android 集成部分(您可以下载 google-services.json 的页面)的控制台中指定的指纹相同的 SHA1 指纹

2) 最重要的是,转到您的 Firebase 项目的设置(齿轮图标位于左上角的概览右侧。然后切换到帐户链接标签。在该标签上,将 Google Play 链接到您的项目。

【讨论】:

【参考方案5】:

如果尝试了上述所有方法后仍然无法登录,您也可以尝试在真机上运行代码。我花了两天时间尝试使用 android studio 模拟器登录。如果您在真实设备上成功登录,则需要在您的模拟器上更新 google play 服务。

【讨论】:

【参考方案6】:

我在寻找这个错误的解决方案时正在使用Android模拟器。我尝试过的事情如下:

    已创建 SHA1 证书。 通过添加应用程序徽标和支持电子邮件更新了 oAuthConsent 屏幕。

但是直到我从android模拟器切换到物理android设备之前,上述方法都不起作用。 希望这个答案可能对某人有所帮助。

学习愉快!

【讨论】:

【参考方案7】:

我现在遇到了同样的问题。经过一些调试,我发现我错过了在身份验证下启用谷歌登录方法。启用后就可以正常使用了。

【讨论】:

【参考方案8】:

对于这个问题的最终结果,我确定您现在正在拉伸头发并一直在思考为什么它仍然不起作用。让我分享一下对我有用的东西。

在您完成以下所有操作后,仍然无法正常工作(得到所有强大的 12500 错误):

    检查 Firebase 项目设置中的调试 SHA-1 密钥 更新了您项目中的 google-service.json 更新了您在 Firebase 项目中的支持​​电子邮件 更新了您的隐私链接、服务条款链接、应用程序徽标 Google API 控制台中的 Oath2 同意页面 在您的 Android 物理设备中运行

所以:

所以基本上在您的 Google API 控制台中,您将拥有 2 个 OAuth 2.0 客户端 ID。您将在这里有 2 件商品。当你点击里面时,会有一个URI,为你设置your-project.firebaseapp.com(名称是Web客户端(由Google服务自动创建))。 不要使用那个,而是你另一个,它没有为你设置任何 URI(名称是 Web 客户端(由 Google 登录自动创建))。出于某种原因,使用第二个选项 WORKS

希望能帮到你。享受

【讨论】:

【参考方案9】:

如果您遇到平台异常并且此 com.google.android.gms.common.api.ApiException: 12500 则不要担心,请点击此链接,希望您的问题能够得到解决。

步骤:-

    删除 debug.keystore 文件。该文件存储在 Windows 上的 C:\Documents and Settings.android\

    首先从您的 IDE 运行您的应用

    使用这个命令生成一个新的 debug.keystore 文件,keytool -list -v -keystore "%USERPROFILE%.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android 这里 USERPROFILE 表示你的 PC 用户名的名称

    在 firebase 控制台中更新您的 SHA 1

    下载 google_service.json 文件的更新版本

使用此链接作为参考,https://github.com/flutter/flutter/issues/25640#issuecomment-449589417

【讨论】:

以上是关于com.google.android.gms.common.api.ApiException:12500的主要内容,如果未能解决你的问题,请参考以下文章