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

Android集成Firebase Auth邮箱注册用户未保存至控制台问题

Firebase邮箱密码注册无数据问题排查

问题背景

  • 已在Firebase平台创建身份认证项目,完成Android应用与云端项目对接,集成所需SDK,工具提示已成功连接Firebase服务
  • 需求为实现仅邮箱+密码方式注册用户,用户数据存入Firebase认证模块
  • 已完成SignInActivity、SignUpActivity业务代码编写,应用可正常编译运行无崩溃,但执行注册操作后,Firebase控制台Authentication板块无已注册用户数据,列表为空,未显示注册提交的邮箱地址
  • 参考实现效果:
    参考示例图

现有代码

SignInActivity 代码

package com.codingstuff.loginandsignup

import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.codingstuff.loginandsignup.databinding.ActivitySignInBinding
import com.google.firebase.auth.FirebaseAuth

class SignInActivity : AppCompatActivity() {

    private lateinit var binding: ActivitySignInBinding
    private lateinit var firebaseAuth: FirebaseAuth

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivitySignInBinding.inflate(layoutInflater)
        setContentView(binding.root)


        firebaseAuth = FirebaseAuth.getInstance()

        binding.textView.setOnClickListener {
            val intent = Intent(this, SignUpActivity::class.java)
            startActivity(intent)
        }

        binding.button.setOnClickListener {
            val email = binding.emailEt.text.toString()
            val pass = binding.passET.text.toString()

            if (email.isNotEmpty() && pass.isNotEmpty()) {

                firebaseAuth.signInWithEmailAndPassword(email, pass).addOnCompleteListener {
                    if (it.isSuccessful) {
                        val intent = Intent(this, MainActivity::class.java)
                        startActivity(intent)
                    } else {
                        Toast.makeText(this, it.exception.toString(), Toast.LENGTH_SHORT).show()

                    }
                }
            } else {
                Toast.makeText(this, "Empty Fields Are not Allowed !!", Toast.LENGTH_SHORT).show()

            }
        }
    }
}

SignUpActivity 代码

package com.codingstuff.loginandsignup

import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.codingstuff.loginandsignup.databinding.ActivitySignUpBinding
import com.google.firebase.auth.FirebaseAuth

class SignUpActivity : AppCompatActivity() {

    private lateinit var binding: ActivitySignUpBinding
    private lateinit var firebaseAuth: FirebaseAuth

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = ActivitySignUpBinding.inflate(layoutInflater)
        setContentView(binding.root)

        firebaseAuth = FirebaseAuth.getInstance()

        binding.textView.setOnClickListener {
            val intent = Intent(this, SignInActivity::class.java)
            startActivity(intent)
        }
        binding.button.setOnClickListener {
            val email = binding.emailEt.text.toString()
            val pass = binding.passET.text.toString()
            val confirmPass = binding.confirmPassEt.text.toString()

            if (email.isNotEmpty() && pass.isNotEmpty() && confirmPass.isNotEmpty()) {
                if (pass == confirmPass) {

                    firebaseAuth.createUserWithEmailAndPassword(email, pass).addOnCompleteListener {
                        if (it.isSuccessful) {
                            val intent = Intent(this, SignInActivity::class.java)
                            startActivity(intent)
                        } else {
                            Toast.makeText(this, it.exception.toString(), Toast.LENGTH_SHORT).show()

                        }
                    }
                } else {
                    Toast.makeText(this, "Password is not matching", Toast.LENGTH_SHORT).show()
                }
            } else {
                Toast.makeText(this, "Empty Fields Are not Allowed !!", Toast.LENGTH_SHORT).show()

            }
        }
    }
}

排查步骤(按优先级排序)

  • 确认控制台开启邮箱密码登录入口
    进入Firebase控制台对应项目,打开Authentication → Sign-in method页面,检查「电子邮件地址/密码」登录提供商是否为启用状态,若为禁用状态手动开启并保存配置后重试。
  • 核对配置文件正确性
    确认app模块根目录下的google-services.json是从当前对接的Firebase项目导出的最新版本,若近期修改过应用包名、新增/更换了签名密钥,需要重新下载配置文件替换旧文件,执行Clean Project后重新编译运行。同时确认项目根目录build.gradle、app模块build.gradle中已正确配置Firebase相关插件和依赖,版本号兼容。
  • 打印日志确认请求实际返回结果
    现有代码的失败提示为短时长Toast,部分机型会默认屏蔽,建议在createUserWithEmailAndPassword的回调中添加日志打印:
    firebaseAuth.createUserWithEmailAndPassword(email, pass).addOnCompleteListener {
        Log.d("FirebaseReg", "success:${it.isSuccessful}, err:${it.exception?.message}")
        // 原有逻辑保留
    }
    
    触发注册操作后查看Logcat输出,常见错误原因包括:
    • 密码长度不足6位:Firebase邮箱密码注册要求密码最少6位,长度不足会直接返回注册失败
    • 邮箱格式不符合规范:输入的邮箱地址格式错误会被服务端拦截
    • 网络连通性问题:测试设备网络受限、代理/VPN配置异常会导致请求无法送达Firebase服务器
    • 签名密钥未登记:debug、release签名对应的SHA1/SHA256值未添加到Firebase项目的应用配置中,会被服务端拒绝请求
  • 验证前置校验逻辑是否正常触发
    注册按钮点击后先判断输入框非空、两次密码一致,可以在每个分支入口加日志,确认输入内容符合要求,实际发起了注册请求,而非被前置校验拦截。
  • 检查配额与拦截规则
    进入Firebase控制台Authentication → Settings页面,确认没有开启异常流量拦截,免费版项目未超出当日认证请求配额,没有设置禁止注册的相关规则。

内容的提问来源于stack exchange,提问作者Josef M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:30:51