繁体   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