【问题标题】:FIrebase mobile authentication and save user to databaseFIrebase 移动身份验证并将用户保存到数据库
【发布时间】:2019-10-01 18:09:37
【问题描述】:

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

【问题讨论】:

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

标签: android firebase mobile kotlin firebase-authentication


【解决方案1】:

这是你的代码:

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

之后,您创建一个 User 类的实例并将 user 添加到数据库中。

这个userId是当前登录用户的id。如果新的经过身份验证的用户登录,则会将新用户添加到数据库中。

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

【讨论】:

    猜你喜欢
    • 2017-03-18
    • 2022-11-25
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多