【问题标题】:Using provider UID as Firestore ID in AngularFire2 auth在 AngularFire2 身份验证中使用提供者 UID 作为 Firestore ID
【发布时间】:2019-07-17 14:27:58
【问题描述】:

我想将 Google、Facebook 和自定义登录添加到我的 Angular7 网络应用程序。

每个提供者给出的 UID 标识符是唯一的吗?我的意思是,我可以将它用作我的用户 Firestore 集合中的用户 ID 吗?

如果是这种情况,我是否仍然可以在自定义登录中使用createId() 方法自己生成此 ID?或者它可能与提供者 UID 之一相同?

【问题讨论】:

    标签: javascript firebase firebase-authentication google-cloud-firestore angularfire2


    【解决方案1】:

    是的,您可以将其用作用户集合中的 UID。

    这是我的身份验证流程:

    1/ 用户使用电子邮件/密码创建一个新帐户

    async signUpWithPassword(email, password) {
      await firebase.auth().createUserWithEmailAndPassword(email, password)
      // user created!
    }
    

    2/ 我使用身份验证的 onCreate 触发器运行云函数,以将用户保存到我的集合中:

    export const createUserProfile = functions.auth
      .user()
      .onCreate((user: admin.auth.UserRecord) => {
         const { uid } = user
         const userRef = db.doc(`users/${uid}`)
         // Save it to firestore
         return userRef.set({ points: 200 })
    })
    

    3/ 如果此用户尝试向其他提供商(Google/Facebook 等)注册,我会检测他是否使用相同的电子邮件地址,如果是,我会通过帐户链接将新提供商链接到当前提供商:

    https://firebase.google.com/docs/auth/web/account-linking

    这样,用户将有多个身份验证提供程序附加到一个唯一的 UID/配置文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-16
      • 2019-08-02
      • 1970-01-01
      • 1970-01-01
      • 2020-01-23
      • 2021-03-22
      • 2014-04-07
      • 2021-04-29
      相关资源
      最近更新 更多