ios - Firesbase身份验证iOS登录获取用户详细信息
问题描述
我刚刚遵循并正确地将以下教程添加到我的应用程序中。但是我正在努力从 Firestore 数据库中获取“登录”用户的详细信息?
教程:
一旦用户通过我的应用程序注册,Firestore 数据库就会保存“名字”、“姓氏”和“UID”。但是一旦用户登录,我如何获取用户的名字以复制到应用程序内欢迎屏幕上的标签?
谢谢
解决方案
我想你知道 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。
推荐阅读
- google-bigquery - 在 BigQuery 中,是否可以在 BigQuery 存储过程中使用类似于 @@ROWCOUNT 的内容?
- javascript - 对于 D3 堆叠条,我如何知道鼠标在哪个条中?
- aws-code-deploy - AWS CodePloy 管道示例存储库:“bash: zip: command not found”
- ios - ScrollView 未显示自定义 UIView
- xamarin.forms - Xamarin 表单:如何为 StackLayout 添加 SwipeGestureRecognizer?
- javascript - 获取 TD 的值以在模态 Javascript 中显示
- python - [Python]如何自动为数据框分配特殊索引?
- java - 如何将不同的片段分配给不同的颜色表?
- tensorflow.js - TypeError: JSON 内容必须是 `dict`,但发现
- react-native - 如何在本机基础 react-native 中自动调整选项卡渲染项的滚动高度