【问题标题】:Can I update a user document whenever a user updates his authentication profile?每当用户更新其身份验证配置文件时,我可以更新用户文档吗?
【发布时间】:2020-07-28 09:53:33
【问题描述】:

我正在使用颤振,并且我有一个 AuthenticationProvider。每当我的用户用他的手机登录时,我也会更新他的个人资料。但我的问题是无法查询 auth 用户。所以我读到我应该保留一个单独的用户集合。现在我的问题是,每当用户更新其身份验证配置文件时,是否可以更新我的用户集合中的用户文档?我想用云功能来做这个,但我注意到只有一个创建和删除?那么我该怎么做呢?

这是我目前拥有的

身份验证提供者

  Future<void> _verificationComplete(BuildContext context, AuthCredential authCredential, userInfo.UserInfo userInfo) async {

    AuthResult authResult = await FirebaseAuth.instance.signInWithCredential(authCredential);
    final userUpdateInfo = UserUpdateInfo();
    userUpdateInfo.displayName = userInfo.name;
    userUpdateInfo.photoUrl = userInfo.photoUrl;
    await authResult.user.updateProfile(userUpdateInfo);
    await authResult.user.reload();
    user = UserModel.fromFirebase(authResult.user);
    _status = AuthenticationStatus.authenticated;
    notifyListeners();
  }

云功能

export const onUserCreated = functions.region('europe-west1').auth.user().onCreate(async user => {

    const privateUserData = {
        activeGroup: '',
        cloudMessagingToken: '',
    }

    const publicUserData = {
        name: '',
        photoUrl: '',
    }

    const promises = [];
    promises.push(firestore.collection('users').doc(user.uid).collection('private').doc('data').set(privateUserData));
    promises.push(firestore.collection('users').doc(user.uid).collection('public').doc('data').set(publicUserData));
    return await Promise.all(promises);
});

【问题讨论】:

    标签: flutter dart google-cloud-firestore google-cloud-functions


    【解决方案1】:

    当用户更新其 Firebase 身份验证配置文件时,没有 Cloud Functions 触发器。我强烈推荐filing a feature request,因为它很怀念。

    目前,您可以获得的最接近的方法是使用直接从应用程序代码调用的云函数。有两个选项:

    1. 让您的应用程序代码首先调用 Firebase 身份验证 API,然后在完成后,让它调用您的自定义 Cloud Function 来更新数据库。

    2. 让您的应用程序代码立即调用 Cloud Function,然后调用 Cloud Function update both the user profile 和数据库。

    不知何故,我经常使用第一种方法,但看到更多开发人员采用第二种方法。我认为他们的方法可能更简单,但我还没有开始使用它。 :)

    【讨论】:

      猜你喜欢
      • 2021-07-31
      • 2021-04-24
      • 1970-01-01
      • 2019-10-22
      • 2019-12-22
      • 2020-07-23
      • 2021-08-31
      • 2021-01-24
      • 2017-05-05
      相关资源
      最近更新 更多