问题描述
我有一个用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商店处理的密钥签名的应用生成的身份验证请求。以前,它仅接受来自本地签名应用程序签名的应用程序的请求,该密钥存储在计算机上。