我正在通过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总是保持不变,尽管其他孩子的用户名和邮件重置为“”
答案 0 :(得分:0)
这是您的代码:
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
,然后在数据库中userId
下添加users
。
之后,您创建一个类User
的实例,并将user
添加到数据库中。
此userId
是当前登录用户的ID。如果有新的经过身份验证的用户登录,则会将新用户添加到数据库中。
userId
是随机生成的,其创建与电子邮件或Facebook或任何其他登录类型无关。