Не могу создать профиль пользователя в firestore после firebase.auth.getRedirectResult - PullRequest
0 голосов
/ 04 ноября 2019

В мобильном приложении я использую Firebase Google OAuth для входа в систему. Как рекомендуется для мобильных устройств, я предпочитаю firebase.auth.signInWithRedirect вместо signInWithPopup.

Когда происходит вход, пользователь перенаправляется в мобильное приложение, и мое приложение получает информацию о пользователе (от поставщика OAuth) с обещанием firebase.auth.getRedirectResult.

    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 работает нормально, но в firestore не создается ни одной записи.

После нескольких часов исследования я заметил, что он работает нормально, вызываяupdateUserData в пределах setTimeout setTimeout( _ => this.updateUserData(result.user), 100)

Я предоставляю пример stackblitz

Я не уверен в этом обходном пути, я хотел бы знать, сталкивался ли кто-то также с этимвопрос или если способ, который я реализовал, это неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...