MRN*_*MRN 3 dart firebase google-signin flutter google-cloud-firestore
我已经在我的 flutter 应用程序中实现了google_sign_in包。我正在向 google 注册并将数据保存在 Cloud Firestore 数据库中。我可以正确保存数据。
我想要的是,下次有人尝试使用相同的电子邮件再次使用 google 注册时,它将从数据库中检查并显示他已经拥有一个帐户并要求使用 google 进行“登录”。
我尝试这样做的原因是,我将更新用户数据并注销。
如果我使用相同的 Google 电子邮件再次登录/注册,它会将我更新的数据替换为 Google 个人资料中的详细信息。我希望 Firestore 中的更新数据保留,而不是每次登录时更新。
任何人都可以帮我解决这个问题。谢谢!
小智 5
如果用户是新用户,并且已存储在用户集合中,则此函数返回 true
`Future<bool> isNewUser(FirebaseUser user) async {
QuerySnapshot result = await firestore
.collection("users")
.where("email", isEqualTo: user.email)
.getDocuments();
final List<DocumentSnapshot> docs = result.documents;
return docs.length == 0 ? true : false;
}`
Run Code Online (Sandbox Code Playgroud)
如果用户是新用户,则首先使用上述功能,如果用户是新用户,则将用户详细信息添加到用户集合中,例如
`Future<void> addUserToDb(FirebaseUser currentuser) async {
user = User(
uid: currentuser.uid,
email: currentuser.email,
name: currentuser.displayName,
profilePhoto: currentuser.photoUrl,
);
firestore
.collection("users")
.document(currentuser.uid)
.setData(user.toMap(user));
}`
Run Code Online (Sandbox Code Playgroud)
如果用户不是新用户,则显示登录屏幕
| 归档时间: |
|
| 查看次数: |
1947 次 |
| 最近记录: |