firebase.auth.getRedirectResult之后无法在Firestore上创建用户个人资料

时间:2019-11-04 04:12:05

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

在移动应用程序上,我使用Firebase Google OAuth登录用户。按照移动设备的建议,我更喜欢firebase.auth.signInWithRedirect而不是signInWithPopup。

发生登录后,用户将通过承诺firebase.auth.getRedirectResult重定向到移动应用,并且我的应用(从OAuth提供者那里)获取用户详细信息。

dfA.join(dfB, (dfA.key == dfB.key) & (dfA.createdTime  < dfB.createdTime) ).show()

正确填充结果值,并且对updateUserData的调用工作正常,但在Firestore上未创建任何记录。

经过几个小时的调查,我发现在setTimeout this.afAuth.auth.getRedirectResult().then((result) => { if (result.user) { this.updateUserData(result.user) // setTimeout( _ => this.updateUserData(result.user), 100); } }) private updateUserData(user) { // Sets user data to firestore on login console.log(user); const userRef: AngularFirestoreDocument<User> = this.afs.doc(`users/${user.uid}`); const data = { uid: user.uid, email: user.email, displayName: user.displayName, photoURL: user.photoURL } userRef.set(data, { merge: true }).then( _ => console.log('result')); } 内调用updateUserData可以正常工作

我提供了一个stackblitz example

我对这种解决方法没有信心,我想知道是否有人也遇到了这个问题,或者我的实现方式是否错误。

0 个答案:

没有答案