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

如何在Xamarin Android Firestore中获取字段值与当前用户全名

Xamarin Android 读取Firestore当前用户指定字段(全名)实现

根据你已实现的Firebase Auth登录态获取逻辑,结合你给出的Firestore用户数据存储结构(users根集合下以用户邮箱作为文档ID,文档内fullname字段存储用户全名),可以按以下方式实现:

前置依赖

首先确认项目已经安装Nuget包Xamarin.Firebase.Firestore,且Firebase基础初始化逻辑已完成。

实现代码

直接在账号页的生命周期方法(比如OnCreate)里加入以下逻辑:

// 获取Firestore数据库实例
var firestoreDb = FirebaseFirestore.Instance;
// 拿到当前登录用户的邮箱(复用你已实现的逻辑)
var currentEmail = FirebaseAuth.Instance.CurrentUser.Email;

try
{
    // 定位对应用户的文档路径
    DocumentReference userDoc = firestoreDb.Collection("users").Document(currentEmail);
    // 异步拉取文档快照
    var snapshot = await userDoc.GetAsync();

    if (snapshot.Exists())
    {
        // 读取fullname字段值,字段名需和Firestore中存储的键名完全一致(大小写敏感)
        string userFullName = snapshot.GetString("fullname");
        // 切主线程更新UI
        RunOnUiThread(() =>
        {
            // 你已有的邮箱赋值逻辑
            AccountEmailText.Text = $"Email: {currentEmail}";
            // 新增全名赋值逻辑
            AccountFullNameText.Text = $"Full Name: {userFullName}";
        });
    }
    else
    {
        RunOnUiThread(() => Toast.MakeText(this, "未查询到当前用户信息", ToastLength.Short).Show());
    }
}
catch (Exception e)
{
    RunOnUiThread(() => Toast.MakeText(this, $"用户信息加载失败:{e.Message}", ToastLength.Short).Show());
}

注意事项

  • 如果你的users集合下的文档ID不是用户邮箱,而是Firebase Auth生成的用户Uid,只需要把取文档的参数从currentEmail替换为FirebaseAuth.Instance.CurrentUser.Uid即可
  • Firestore的网络请求默认在后台线程执行,所有UI更新操作必须通过RunOnUiThread切到主线程,否则会触发线程访问异常
  • 请确保Firestore安全规则配置正确,给已登录用户开放自身文档的读权限,避免权限不足导致拉取失败
  • 字段名严格区分大小写,如果你的存储字段名是驼峰格式fullName,代码里的GetString参数也要对应修改,否则会取到空值

内容的提问来源于stack exchange,提问作者Ye LIN Tun Net

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:09:20