我已经在flutter应用程序中实现了google_sign_in包。我正在向Google注册并将数据保存在Cloud Firestore数据库中。我可以正确保存数据。
我想要的是,下次有人尝试使用同一封电子邮件再次在Google中注册时,它将从数据库中检查并显示他已经拥有一个帐户,并要求使用Google“登录”。
我尝试这样做的原因是,我将更新用户数据并注销。
如果我再次使用相同的Google电子邮件登录/注册,它将用google个人资料中的详细信息替换我的更新数据。我想保留Firestore中的更新数据,而不是每次登录时都更新。
谁能帮我这个忙。谢谢!
如果用户是new,并且已经存储在users集合中,则此函数返回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;
}`
首先,如果用户是新用户,则使用上述功能;如果用户是新用户,则将用户详细信息添加到用户集合,例如
`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));
}`
如果该用户不是新用户,则显示登录屏幕
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句