如何为 Firebase (Kotlin) 创建自定义身份验证

Posted

技术标签:

【中文标题】如何为 Firebase (Kotlin) 创建自定义身份验证【英文标题】:How Can I Create Custom Auth For Firebase (Kotlin) 【发布时间】:2021-12-19 18:04:42 【问题描述】:

我想使用用户名、密码和电子邮件将用户添加到 Firebase。我正在使用电子邮件密码登录方法,但如何将用户名添加到数据库? 这是我为电子邮件和密码登录方法编写的基本代码:


    fun signup(view:View)
        val email = binding.emailText.text.toString()
        val username = binding.usernameText2.text.toString()
        val password = binding.passwordText2.text.toString()
        if(email.equals("") || username.equals("") || password.equals(""))
            Toast.makeText(this,"Don't Leave them empty!",Toast.LENGTH_LONG).show()
        else
            auth.createUserWithEmailAndPassword(email,password).addOnSuccessListener 
                //sucess
                val intent = Intent(this@SignupActivity,FeedsActivity::class.java)
                startActivity(intent)
                finish()
            .addOnFailureListener 
                //failed
                Toast.makeText(this,it.localizedMessage,Toast.LENGTH_LONG).show()
            

        

    

【问题讨论】:

这已经被讨论过好几次了,所以我推荐看看这些热门答案:***.com/… 【参考方案1】:

为了向数据库中添加一些数据,您必须选择要使用的数据库。您可以使用Cloud Firestore 或Realtime Database。现在,由于登录操作是异步的,因此应该将向数据库写入数据的代码添加到回调中。话虽如此,从FirebaseUser 对象中获取数据:

val firebaseUser = FirebaseAuth.getInstance().currentUser
val email = firebaseUser?.email
val displayName = firebaseUser?.displayName
val user = mapOf(
    displayName to displayName,
    email to email
)

并将其添加到 Firestore:

val db = FirebaseFirestore.getInstance()
val usersRef = db.collection("users")
usersRef.document(uid).set(user)

或者在实时数据库中:

val db = FirebaseDatabase.getInstance().reference
val usersRef = db.child("users")
usersRef.child(uid).setValue(user)

【讨论】:

以上是关于如何为 Firebase (Kotlin) 创建自定义身份验证的主要内容,如果未能解决你的问题,请参考以下文章

如何为分析添加 Firebase 自定义事件?

如何为firebase字段添加价值

Android 中的 Firebase 通知 (Kotlin)

如何为 Kotlin (Gradle) 构建导入 ShadowJar 插件?

如何为你的 Flutter 项目添加 Kotlin 支持?

如何为应用程序在后台显示的通知设置自定义布局?