我正在通过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始终保持不变,尽管其他孩子的用户名和邮件被重置为"“
发布于 2019-05-15 01:58:56
这是你的代码:
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或任何其他登录类型无关。
https://stackoverflow.com/questions/56135092
复制相似问题