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

如何使用Kotlin为Firebase创建自定义身份认证并存储用户名

Firebase注册时写入用户名到数据库实现步骤
  • 核心逻辑:Firebase Auth的邮箱密码注册接口仅会存储邮箱和密码信息,用户名属于自定义用户属性,需要你手动写入Firebase Cloud Firestore或实时数据库,以下以常用的Firestore为例实现:
  1. 先在项目中引入Firestore依赖,确保你的项目已经完成Firebase的基础配置。
  2. 修改你的signup方法,在注册成功的回调中获取当前用户的uid,以uid为文档ID将用户信息写入users集合即可,修改后代码如下:
// 先全局初始化Firestore实例
private val db = FirebaseFirestore.getInstance()

fun signup(view:View){
    val email = binding.emailText.text.toString()
    val username = binding.usernameText2.text.toString()
    val password = binding.passwordText2.text.toString()
    if(email.isEmpty() || username.isEmpty() || password.isEmpty()){
        Toast.makeText(this,"Don't Leave them empty!",Toast.LENGTH_LONG).show()
    }else{
        auth.createUserWithEmailAndPassword(email,password).addOnSuccessListener { authResult ->
            // 注册成功,组装用户数据
            val userMap = hashMapOf(
                "uid" to authResult.user?.uid,
                "email" to email,
                "username" to username
            )
            // 写入Firestore的users集合,文档id用用户uid方便后续查询
            authResult.user?.uid?.let { uid ->
                db.collection("users").document(uid)
                    .set(userMap)
                    .addOnSuccessListener {
                        // 写入成功再跳转页面
                        val intent = Intent(this@SignupActivity,FeedsActivity::class.java)
                        startActivity(intent)
                        finish()
                    }
                    .addOnFailureListener {
                        Toast.makeText(this,"用户信息保存失败:${it.localizedMessage}",Toast.LENGTH_LONG).show()
                    }
            }
        }.addOnFailureListener {
            Toast.makeText(this,it.localizedMessage,Toast.LENGTH_LONG).show()
        }
    }
}
  • 注意事项:你需要提前在Firebase控制台开启Firestore服务,并且配置合理的安全规则,避免未授权访问,基础写入权限规则示例如下:
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow create: if request.auth != null && request.auth.uid == userId;
      allow read, update, delete: if request.auth != null && request.auth.uid == userId;
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:27:04