【问题标题】: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/配置文件。