[英]How to allow only authenticated users to create a collection in Firebase Firestore?
[英]Linking Firebase Authenticated user with 'users' collection in Flutter
flutter 的新手,第一次在这里发帖!
我正在使用 flutter,使用 Firebase 和 Cloud Firestore 构建一个移动应用程序。 每个用户在经过身份验证后(通过 email 和密码),目前也被添加到 Firestore 中的“用户”集合中 - 如下所示:
报名方式:
Future signUp() async {
if (passwordConfirmed()) {
await FirebaseAuth.instance.createUserWithEmailAndPassword(
email: _emailController.text.trim(),
password: _passwordController.text.trim(),
);
// add user details
addUserDetails(
_firstNameController.text.trim(),
_lastNameController.text.trim(),
_emailController.text.trim(),
_baseStationController.text.trim(),
);
}
}
Future addUserDetails(String firstName, String lastName, String email,
String baseStation) async {
await FirebaseFirestore.instance.collection('users').add({
'first name': firstName,
'last name': lastName,
'email': email,
'base station': baseStation,
});
}
当他们将信息输入表单中的文本字段并单击按钮时,将调用 signup() 方法。 这成功了,我的用户集合收到了数据,并且登录/注销正常工作。
这些用户有一个“基站”(在 Firestore 中存储为该用户文档中的一个字段),这是他们的工作地点。 我想在他们登录时显示一个欢迎屏幕,以便显示当前用户的“基站”。
我可以使用以下方法访问他们的 email 地址:
final thisUser = FirebaseAuth.instance.currentUser!;
然后例如在他们登录时显示:
Text('Hello, ${thisUser.email!}')
这没问题,但是...
我无法弄清楚他们的身份验证如何链接到集合,所以我想显示“当前用户”的“基站”,例如当他们登录时(我不希望他们必须 select 他们的基站每次选择者都已经提供了注册信息时。
顺便说一句 - 我还可以(单独)成功地从集合中读取数据,并(例如)使用用户集合信息创建一个 listView 构建器,但这适用于所有用户,而不是专门针对已登录的“当前用户” .
感激地收到所有帮助,如果我遗漏了任何东西,我们深表歉意。
update addUserDetails as follows
Future addUserDetails(String firstName, String lastName, String email,
String baseStation) async {
await FirebaseFirestore.instance.collection('users').doc(FirebaseAuth.instance.currentUser!.uid).set({
'first name': firstName,
'last name': lastName,
'email': email,
'base station': baseStation,
});
如果您想获取特定的用户详细信息,请使用以下代码
final user = await FirebaseFirestore.instance.collection('users').doc(FirebaseAuth.instance.currentUser!.uid).get();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.