AngularFire:获取 isNewUser 标志;

问题描述 投票:0回答:2

我需要获取“additionalUserInfo.isNewUser”。

  import { User, getAdditionalUserInfo, getAuth, user, UserCredential } from '@angular/fire/auth';

  afAuth = getAuth();

  user$: Observable<User | null> = user(this.afAuth);

  userSubscription = this.user$
    .pipe(
      switchMap(firebaseUser => {

        if (!firebaseUser) return of(null);

        return from(firebaseUser.getIdTokenResult())
          .pipe(
            map(idTokenResult => {
              // ... map claims from token to user object;
              return userWithClaims;
            }),
           
            //TODO: I need the 'additionalUserInfo.isNewUser' here
          );
      }),
      ...

AngularFire 提供了 'UserCredential' 接口和 'getAdditionalUserInfo' 方法,
但我不知道从哪里获取“userCredential”对象。

getAdditionalUserInfo(userCredential: UserCredential) { ... }

我在“便利可观察量”部分找不到任何有用的东西。

angular firebase firebase-authentication angularfire2 angularfire
2个回答
0
投票

您可以传递用户对象并获取详细信息。之后您可以将其添加到用户对象本身。

参考答案

import { User, getAdditionalUserInfo, getAuth, user, UserCredential } from '@angular/fire/auth';

  afAuth = getAuth();

  user$: Observable<User | null> = user(this.afAuth);

  userSubscription = this.user$
    .pipe(
      switchMap(firebaseUser => {

        if (!firebaseUser) return of(null);

        return from(firebaseUser.getIdTokenResult())
          .pipe(
            map(idTokenResult => {
              // ... map claims from token to user object;
              firebaseUser.userWithClaims = userWithClaims;
              const {isNewUser} = getAdditionalUserInfo(firebaseUser);
              firebaseUser.isNewUser = isNewUser;
              return firebaseUser;
            }),
          );
      }),
      ...

0
投票

我认为您需要先使用用户登录,才能获取 UserCredential 数据。

signInWithEmailAndPassword(auth, email, password)
  .then((userCredential) => {
    // Signed in 
    const user = userCredential.user;
    // ...
  })

那么就可以单独使用

getAdditionalUserInfo
方法

import {getAdditionalUserInfo} from "firebase/auth"

const { isNewUser } = getAdditionalUserInfo(userCredential)
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.