Android FIrebase移动身份验证并将用户保存到数据库

Android FIrebase移动身份验证并将用户保存到数据库,android,firebase,mobile,kotlin,firebase-authentication,Android,Firebase,Mobile,Kotlin,Firebase Authentication,我正在通过Firebase中的手机号码验证用户。目前我处于测试模式。我的想法是,如果以前没有使用过手机号码,那么就会创建一个新用户。这里我使用了一个函数saveUserToFirebaseDatabase。我的想法是,这个函数将验证用户是否已经存在。但我现在写的方式却不是这样。因此,当用户注销并登录时,我在其他地方插入的子项的值将丢失。这显然是因为函数saveUserToFirebaseDatabase正在重新创建用户 这里我观察到一件有趣的事情,那就是为手机号码创建的uid对于所有登录都保持不

我正在通过Firebase中的手机号码验证用户。目前我处于测试模式。我的想法是,如果以前没有使用过手机号码,那么就会创建一个新用户。这里我使用了一个函数saveUserToFirebaseDatabase。我的想法是,这个函数将验证用户是否已经存在。但我现在写的方式却不是这样。因此,当用户注销并登录时,我在其他地方插入的子项的值将丢失。这显然是因为函数saveUserToFirebaseDatabase正在重新创建用户

这里我观察到一件有趣的事情,那就是为手机号码创建的uid对于所有登录都保持不变。这让我对saveUserToFirebaseDatabase函数更加困惑。这是我在数据库中保存用户的代码

private fun saveUserToFirebaseDatabase(){
    val uid = FirebaseAuth.getInstance().uid ?: ""
    val ref = FirebaseDatabase.getInstance().getReference("/users/$uid")
    val user = User(uid, "","+91"+MobileNumber.text.toString(), "")
    ref.setValue(user)
}

class User(val uid: String, val username: String, val mobile: String, val mail: String)
用户身份验证例行程序符合Firebase文档的要求,工作正常。有人能解释一下这个函数saveUserToFirebaseDatabase是如何工作的吗。为什么uid总是保持不变,尽管其他孩子的用户名和邮件被重置为“”

这是您的代码:

private fun saveUserToFirebaseDatabase(){
val uid = FirebaseAuth.getInstance().uid ?: ""
val ref = FirebaseDatabase.getInstance().getReference("/users/$uid")
val user = User(uid, "","+91"+MobileNumber.text.toString(), "")
ref.setValue(user)
}

class User(val uid: String, val username: String, val mobile: String, val mail: String)
首先,检索
userId
,然后在数据库中的
users
下添加
userId

private fun saveUserToFirebaseDatabase(){
    val uid = FirebaseAuth.getInstance().uid ?: ""
    val ref = FirebaseDatabase.getInstance().getReference("/users/$uid")
    val user = User(uid, "","+91"+MobileNumber.text.toString(), "")
    ref.setValue(user)
}

class User(val uid: String, val username: String, val mobile: String, val mail: String)
然后创建类
User
的实例,并将
User
添加到数据库中

private fun saveUserToFirebaseDatabase(){
    val uid = FirebaseAuth.getInstance().uid ?: ""
    val ref = FirebaseDatabase.getInstance().getReference("/users/$uid")
    val user = User(uid, "","+91"+MobileNumber.text.toString(), "")
    ref.setValue(user)
}

class User(val uid: String, val username: String, val mobile: String, val mail: String)
userId
是当前登录用户的id。如果新的经过身份验证的用户登录,则会将新用户添加到数据库中

private fun saveUserToFirebaseDatabase(){
    val uid = FirebaseAuth.getInstance().uid ?: ""
    val ref = FirebaseDatabase.getInstance().getReference("/users/$uid")
    val user = User(uid, "","+91"+MobileNumber.text.toString(), "")
    ref.setValue(user)
}

class User(val uid: String, val username: String, val mobile: String, val mail: String)
userId
是随机生成的,它的创建与电子邮件、Facebook或任何其他登录类型无关

这是您的代码:

private fun saveUserToFirebaseDatabase(){
val uid = FirebaseAuth.getInstance().uid ?: ""
val ref = FirebaseDatabase.getInstance().getReference("/users/$uid")
val user = User(uid, "","+91"+MobileNumber.text.toString(), "")
ref.setValue(user)
}

class User(val uid: String, val username: String, val mobile: String, val mail: String)
首先,检索
userId
,然后在数据库中的
users
下添加
userId

private fun saveUserToFirebaseDatabase(){
    val uid = FirebaseAuth.getInstance().uid ?: ""
    val ref = FirebaseDatabase.getInstance().getReference("/users/$uid")
    val user = User(uid, "","+91"+MobileNumber.text.toString(), "")
    ref.setValue(user)
}

class User(val uid: String, val username: String, val mobile: String, val mail: String)
然后创建类
User
的实例,并将
User
添加到数据库中

private fun saveUserToFirebaseDatabase(){
    val uid = FirebaseAuth.getInstance().uid ?: ""
    val ref = FirebaseDatabase.getInstance().getReference("/users/$uid")
    val user = User(uid, "","+91"+MobileNumber.text.toString(), "")
    ref.setValue(user)
}

class User(val uid: String, val username: String, val mobile: String, val mail: String)
userId
是当前登录用户的id。如果新的经过身份验证的用户登录,则会将新用户添加到数据库中

private fun saveUserToFirebaseDatabase(){
    val uid = FirebaseAuth.getInstance().uid ?: ""
    val ref = FirebaseDatabase.getInstance().getReference("/users/$uid")
    val user = User(uid, "","+91"+MobileNumber.text.toString(), "")
    ref.setValue(user)
}

class User(val uid: String, val username: String, val mobile: String, val mail: String)

userId
是随机生成的,它的创建与电子邮件、Facebook或任何其他登录类型无关

您没有创建函数
saveusertofirebasedatabase
?是的。我的困惑在于,为什么重新创建用户时uid保持不变。我将编辑我的问题,因为有一些混乱。您没有创建函数
saveusertofirebasedatabase
?是的,我创建了。我的困惑在于,为什么重新创建用户时uid保持不变。我将编辑我的问题,因为有一些混乱。