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

com.google.android.gms.common.api.ApiException:12500,android,Android,这是我第一次尝试。。。。正在尝试查找过去2天的问题。 我正在尝试将google登录集成到android应用程序中,但如下所示: com.google.android.gms.common.api.ApiException:12500 遵循以下代码: 确保oauth客户端id与其他帖子中建议的~/.android/debug.keystore中的正确SHA-1指纹一起出现在开发控制台中 在应用程序级别使用最新的play services 49和in build.gradle:implement

这是我第一次尝试。。。。正在尝试查找过去2天的问题。 我正在尝试将google登录集成到android应用程序中,但如下所示: com.google.android.gms.common.api.ApiException:12500

遵循以下代码:

  • 确保oauth客户端id与其他帖子中建议的~/.android/debug.keystore中的正确SHA-1指纹一起出现在开发控制台中

  • 在应用程序级别使用最新的play services 49和in build.gradle:implementation'com.google.android.gms:play services auth:16.0.1'

  • 在项目级build.gradle中使用以下命令:

buildscript{//…依赖项{//…classpath'com.google.gms:google services:4.1.0'//…google services plugin}
公共类注册活动扩展了AppCompatActivity{
谷歌私人客户gsc;
私有FirebaseAuth FirebaseAuth;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u注册);
谷歌签名gso=新谷歌签名
.Builder(谷歌登录。默认登录)
.requestIdToken(String.valueOf(R.String.gplus\u api\u client\u id))
.requestEmail()
.build();
gsc=GoogleSignIn.getClient(此为gso);
//初始化firebase身份验证
firebaseAuth=firebaseAuth.getInstance();
}
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
//从GoogleSignInClient.GetSignInent(…)启动Intent返回的结果;
if(requestCode==RC\u登录){
//此调用返回的任务始终已完成,无需附加
//听众。
任务<谷歌签名帐户>任务=谷歌签名。GetSignedAccountFromIntent(数据);
handleSignInResult(任务);
}
}
私有无效handleSignInResult(任务completedTask){
试一试{
//成功登录
GoogleSignInAccount account=completedTask.getResult(ApiException.class);
Log.w(“SignUpActivity/handleSignInResult”,“尝试使用Google登录…”+帐户);
firebaseAuthWithGoogle(账户);
//成功登录,显示已验证的UI。
//Log.w(“SignUpActivity/handleSignInResult”,“Google成功登录帐户”+帐户);
}捕获(APIE){
//ApiException状态代码表示详细的故障原因。
//有关更多信息,请参阅GoogleSignInstationCodes类参考。
Log.w(“SignUpActivity/handleSignInResult”,“谷歌登录失败,出现异常:”+e);
}
}
私有void firebaseAuthWithGoogle(谷歌登录帐户){
Log.i(“SignUpActivity/firebaseAuthWithGoogle”,“登录身份:“+account.getId()”);
AuthCredential credential=GoogleAuthProvider.getCredential(account.getIdToken(),null);
firebaseAuth.signInWithCredential(凭证)
.addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull TaskTask){
if(task.issusccessful()){
FirebaseUser=firebaseAuth.getCurrentUser();
Log.i(“SignUpActivity/firebaseAuthWithGoogle”,“用户登录成功:“+user”);
}否则{
Log.e(“SignUpActivity/firebaseAuthWithGoogle”,“用户身份验证失败”);
Snackbar.make(findviewbyd(R.id.view\u signup),“身份验证失败”,Snackbar.LENGTH\u SHORT);
}
}
});
}

}
遵循谷歌开发者文档,在那里清楚地一步一步地给出说明 如何将google登录集成到Android应用程序

重要

  • 检查您是否已在Google控制台中启用Google plus API
  • 将项目配置到Google sing in后,它应连接到firebase。您只需要在firebase上选择您的项目
  • 将JSON文件包含到项目资源管理器中
  • 您的\u服务器\u客户端\u ID 检查您是否提供了正确的服务器客户端id

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

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


    2) 除此之外,请转到firebase项目的设置(齿轮图标位于左上角的概览右侧。然后切换到帐户链接选项卡。在该选项卡上,将Google Play链接到您的项目。

    我遇到了这个问题。并且已经解决了它。SHA1调试和relase都已添加到Firebase控制台,但仍然不起作用。而且我尝试只将SHA1调试放在其中,但仍然不起作用。经过这么多次之后尝试和错误我通过完成凭证菜单中“oAuth同意屏幕”的信息来解决它,以下是步骤:

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

  • 我与同样的错误斗争了12500个小时。 显然,您需要在此页面上填写所有必需的信息(应用程序名称、徽标、电子邮件、授权域)
    在OAuth同意屏幕选项卡上

    如果在尝试上述所有方法后仍然无法登录,您也可以尝试在真实设备上运行代码。我花了两天时间尝试使用android studio em登录