如何使用Kotlin为Firebase创建自定义身份认证并存储用户名
Firebase注册时写入用户名到数据库实现步骤
- 核心逻辑:Firebase Auth的邮箱密码注册接口仅会存储邮箱和密码信息,用户名属于自定义用户属性,需要你手动写入Firebase Cloud Firestore或实时数据库,以下以常用的Firestore为例实现:
- 先在项目中引入Firestore依赖,确保你的项目已经完成Firebase的基础配置。
- 修改你的
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
相关产品推荐
相关产品推荐

