如何在Firebase中获取用户的用户名(Swift/Xcode开发场景)
Firebase Swift 端获取用户名实现方案
方案1:直接读取Firebase Auth自带的用户名字段
如果你在用户注册/修改资料时已经将用户名写入了Firebase Auth的displayName属性,可直接通过当前用户对象读取,逻辑和你获取邮箱的方式一致:
// 安全解包避免强制解包崩溃 guard let currentUser = Auth.auth().currentUser, let username = currentUser.displayName else { // 兜底处理:用户未登录/未设置用户名的逻辑 return } // 拿到username后直接更新个人资料页UI即可
如果还没实现写入用户名到Auth属性的逻辑,可通过如下方法更新:
guard let currentUser = Auth.auth().currentUser else { return } let profileChangeRequest = currentUser.createProfileChangeRequest() // 将用户输入的用户名赋值给displayName profileChangeRequest.displayName = "用户设置的用户名" profileChangeRequest.commitChanges { error in if let error = error { print("用户名更新失败:\(error.localizedDescription)") return } // 更新成功后刷新UI即可 }
方案2:从云数据库读取用户名
如果你的用户名是存在Firestore/Realtime Database中(比如附加了更多用户自定义字段),直接用你持有的UID请求对应文档即可,以下是Firestore的示例代码:
let db = Firestore.firestore() // 替换成你项目中用户数据的集合名、文档ID规则、用户名字段key即可 db.collection("users").document(uid).getDocument { snapshot, error in if let error = error { print("用户资料拉取失败:\(error.localizedDescription)") return } guard let userData = snapshot?.data() else { print("对应用户资料不存在") return } // 假设你存储用户名字段的key为username guard let username = userData["username"] as? String else { // 未设置用户名兜底逻辑 return } // 拿到用户名后更新UI }
注意:不要使用你示例代码中的强制解包写法,用户未登录、未设置相关字段时强制解包会直接触发App崩溃,建议全部用安全解包处理。
内容的提问来源于stack exchange,提问作者David Csontos
相关产品推荐
相关产品推荐

