Firesbase身份验证iOS登录获取用户详细信息

时间:2019-11-09 09:53:10

标签: ios swift4

我刚刚遵循并正确地将以下教程添加到了我的应用程序。但是我在努力如何从Firestore数据库中获取“已登录”用户的详细信息?

教程:

https://youtu.be/1HN7usMROt8

用户通过我的应用程序注册后,“名”,“姓”和“ UID”将由Firestore数据库保存。但是,一旦用户登录,我如何获取用户的名字以复制到应用程序内欢迎屏幕上的标签上?

谢谢

1 个答案:

答案 0 :(得分:0)

我想您知道Firestore的工作方式。否则,您可以在此documentation中获取所有信息,也可以在YouTube上观看videos有关Firestore的信息。

因此,假设您将用户保存在名为 users 的集合中。用户登录后,您可以像这样获得当前用户:

let currentSignInUser = Auth.auth().currentUser!

如果您要强制打开包装,请确保将登录

拥有当前用户后,可以通过调用当前用户的uid属性来获取其uid:

let currentUserID = currentSignInUser.uid

现在,您可以查询该uid,以从Firestore 用户集合中获取与您当前登录的用户具有相同UID字段值的文档:

let query = Firestore.firestore().collection("users").whereField("UID", isEqualTo: currentUserID)

确保whereField()函数的第一个参数与文档中的字段名称相同。因为您提到UID已保存到数据库,所以我将其命名为UID。

这都是为了获取当前用户的信息并对其进行查询。现在,您可以从Firestore获取文档:

query.getDocuments() { [weak self] (querySnapshot, err) in
        if let err = err {
            print("Error getting documents: \(err)")
        } else {
            if let userInfo = querySnapshot?.documents.first { 
                DispatchQueue.main.async {
                    // Set label text to first name
                    self?.youLabel.text = userInfo["firstName"]
                }
            }
        }
}

userInfo键更改为您用于在Firestore中存储名字的任何名称。例如,如果您将文档字段命名为firstName,则userInfo词典关键字必须为 first