首页 > 解决方案 > Firesbase身份验证iOS登录获取用户详细信息

问题描述

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

教程:

https://youtu.be/1HN7usMROt8

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

谢谢

标签: iosswift4

解决方案


我想你知道 Firestore 是如何工作的。如果不这样做,您可以获取本文档中的所有信息或在 YouTube 上观看有关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字典键必须是firstName


推荐阅读