Google登录会引发com.google.android.gms.common.api.ApiException异常:12500

问题描述

我有一个用Android编写的简单应用程序,我想在其中进行Google Sign和Firebase身份验证。我从官方页面复制粘贴代码。

val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
    .requestIdToken(getString(R.string.default_web_client_id))
    .requestEmail()
    .build()

if (requestCode == REQUEST_CODE_GOOGLE_SIGN_IN) {
    val task = GoogleSignIn.getSignedInAccountFromIntent(data)
    try {
        // Google Sign In was successful,authenticate with Firebase
        val account = task.getResult(ApiException::class.java)
        firebaseAuthWithGoogle(account.idToken!!)
    } catch (e: ApiException) {
        // Google Sign In failed,update UI appropriately
        Log.w("aaa","Google sign in failed",e)
        // ...
    }
}

但是这个简单的代码引发了异常com.google.android.gms.common.api.ApiException: 12500:

问题是什么,我检查了在线资源,每个人都说添加支持电子邮件,添加应用程序图标,但是要添加应用程序图标,我需要经过OAuth验证过程,该过程会询问很多我目前没有的数据在我刚开始开发应用程序时,请帮助我尝试解决这个问题已有48小时。

解决方法

至少在我将其上传到商店之前,它已经可以正常工作了

问题(称为Play App Signing的功能)

似乎Google Play商店正在为您的应用而不是您签名,因此Firebase检测到另一个签名密钥,并阻止了身份验证。重新签名应用程序是 Google Play商店功能,阻止通过签名您未验证的密钥签名的应用程序通过Firebase进行身份验证是 Firebase功能。

解决方案

转到Google Play商店Console→设置→应用签名→parallelism,复制SHA-1证书指纹。

然后转到Firebase Console→项目设置→您的应用程序→添加指纹→并粘贴 SHA1

您在做什么

告诉Firebase接受从使用Google Play商店处理的密钥签名的应用生成的身份验证请求。以前,它仅接受来自本地签名应用程序签名的应用程序的请求,该密钥存储在计算机上。

从此处复制SHA-1:

Play Console screenshot

在此处粘贴SHA-1作为指纹:

enter image description here

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...