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

如何在Android Studio中从Firestore读取已登录用户的个人数据

Firebase 登录后读取用户个人信息实现方案

你已完成Firebase基础服务初始化、登录态获取,补充Firestore数据读取逻辑即可实现需求:

前置确认

  • 你已在Firestore中创建users集合,集合下以用户UID为文档ID存储用户数据,每条文档包含name、email字段
  • 已配置Firestore安全规则允许用户读取自己的文档,规则参考:
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read, write: if request.auth != null && request.auth.uid == userId;
    }
  }
}

核心数据读取逻辑

在你获取userId的代码后,添加如下读取逻辑,可放在onCreate或onStart生命周期中:

db.collection("users").document(userId).get()
        .addOnCompleteListener(task -> {
            if (task.isSuccessful()) {
                DocumentSnapshot document = task.getResult();
                if (document.exists()) {
                    // 替换为你布局中对应展示姓名、邮箱的TextView控件ID
                    String userName = document.getString("name");
                    String userEmail = document.getString("email");
                    nameTextView.setText(userName);
                    emailTextView.setText(userEmail);
                } else {
                    Toast.makeText(SettingsActivity.this, "用户信息不存在", Toast.LENGTH_SHORT).show();
                }
            } else {
                Toast.makeText(SettingsActivity.this, "读取失败:" + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
            }
        });

补充说明

  • 若尚未实现注册阶段写入用户信息的逻辑,注册成功获取用户UID后添加如下代码即可完成数据写入:
Map<String, Object> user = new HashMap<>();
// 替换为用户注册时输入的真实姓名、邮箱
user.put("name", inputName);
user.put("email", inputEmail);
db.collection("users").document(userId)
        .set(user)
        .addOnSuccessListener(aVoid -> Log.d("TAG", "用户信息写入成功"))
        .addOnFailureListener(e -> Log.w("TAG", "写入失败", e));
  • 现有代码可优化:logout方法中的fAuth.getInstance().signOut();可直接改为fAuth.signOut();,你已经提前初始化了fAuth实例,无需重复获取。

内容的提问来源于stack exchange,提问作者user16282322

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:48:01