Google登录抛出异常com.google.android.gms.common.api.ApiException:12500

Google Sign In throws an exception com.google.android.gms.common.api.ApiException: 12500

我有一个用 Android 编写的简单应用程序,我想在其中执行 Google 签名,然后进行 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 小时了。

because at least it was working before I uploaded it to play store

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

似乎 Google Play 商店正在为您的应用程序而不是您签名,因此 Firebase 检测到不同的签名密钥,并阻止了身份验证。 Re-signing 应用是 Google Play 商店的一项功能,可防止应用通过您尚未验证的签名密钥进行签名使用 Firebase 进行身份验证是一项 Firebase 功能

解决方案

前往 Google Play 商店 Console → 设置 → App 签名 → App signing key certificate,复制 SHA-1 证书指纹。

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

你在做什么

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

从这里复制 SHA-1:

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