You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:42:00