我想将Google,Facebook和自定义登录添加到我的Angular7网络应用中。
每个提供商提供的UID标识符是否唯一?我的意思是,我可以将其用作用户Firestore集合中的用户ID 吗?
如果是这种情况,我仍然可以在自己的自定义登录名中使用createId()
方法自己生成此ID吗?还是可以与提供商UID之一相同?
答案 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 /配置文件。