在AngularFire2身份验证中使用提供程序UID作为Firestore ID

时间:2019-02-23 18:51:38

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

这是我的身份验证流程:

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

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

2 /我使用auth的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 /配置文件。