You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Google One Tap登录报错:Cannot find a matching credential 求助

解决Firebase Google登录「Cannot find a matching credential」问题
  • 核对SHA1指纹的准确性
    别凭记忆复制SHA1,直接用Android Studio生成的为准:打开Gradle面板,找到项目根目录下的Tasks > android > signingReport,运行后复制对应build变种的SHA1值,分别去Firebase控制台(项目设置>应用>添加指纹)和Google Cloud控制台(API和服务>凭据>OAuth 2.0客户端ID>安卓客户端)核对,确保指纹完全一致,没有大小写错误或多余空格。

  • 检查OAuth客户端ID的配置细节
    在Google Cloud控制台的「凭据」页面,找到对应安卓应用的OAuth 2.0客户端ID,确认:

    • 签名证书指纹(SHA1)和你当前使用的完全匹配
    • 应用包名和build.gradle里的applicationId完全一致(包括大小写和后缀)
      另外,Firebase配置里的Web Client ID是正确的(用于requestIdToken),但要确保这个Web Client ID所在的OAuth项目和你的Firebase项目是关联的。
  • 重新下载并替换google-services.json
    修改Firebase或Google Cloud的配置后,必须重新下载最新的google-services.json,替换到项目app目录下,然后执行「Clean Project」和「Rebuild Project」,避免旧配置残留。

  • 排查代码逻辑漏洞
    确保GoogleSignInOptions和登录流程的代码没有问题:

    // 初始化GoogleSignInOptions
    val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestIdToken(getString(R.string.default_web_client_id)) // 这里用Firebase提供的Web Client ID
        .requestEmail()
        .setFilterByAuthorizedAccounts(false)
        .build()
    
    // 获取GoogleSignInClient
    val googleSignInClient = GoogleSignIn.getClient(this, gso)
    
    // 登录按钮点击事件
    signInButton.setOnClickListener {
        val signInIntent = googleSignInClient.signInIntent
        startActivityForResult(signInIntent, RC_SIGN_IN)
    }
    
    // 处理登录结果
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == RC_SIGN_IN) {
            val task = GoogleSignIn.getSignedInAccountFromIntent(data)
            try {
                val account = task.getResult(ApiException::class.java)
                // 获取Firebase认证凭据
                val credential = GoogleAuthProvider.getCredential(account.idToken, null)
                FirebaseAuth.getInstance().signInWithCredential(credential)
                    .addOnCompleteListener(this) { task ->
                        if (task.isSuccessful) {
                            // 登录成功逻辑
                        } else {
                            // 登录失败处理
                        }
                    }
            } catch (e: ApiException) {
                // 处理异常
            }
        }
    }
    

    重点检查:requestIdToken是否正确传入Web Client ID,account.idToken是否不为空,setFilterByAuthorizedAccounts(false)是否已在gso中配置。

  • 清除应用缓存和账号状态
    到手机设置里找到你的应用,清除数据和缓存;然后进入Google账号设置,移除测试用的Google账号,重新登录后再测试应用的登录功能,避免旧的认证缓存干扰。

  • 确认Firebase项目关联正常
    在Firebase控制台的「项目设置>应用」中,确认你的安卓应用已正确添加,且SHA1指纹已显示在列表中,没有重复或错误的指纹条目。

内容的提问来源于stack exchange,提问作者Edziu Kowalski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 03:05:27