Flutter Google 登录数据保存到 Firebase Cloud Firestore

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)

如果用户不是新用户,则显示登录屏幕