如何在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
相关产品推荐
相关产品推荐

