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

时间:2019-05-14 16:47:48

标签: android firebase mobile kotlin firebase-authentication

我正在通过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总是保持不变,尽管其他孩子的用户名和邮件重置为“”

1 个答案:

答案 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或任何其他登录类型无关。