我需要获取“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) { ... }
我在“便利可观察量”部分找不到任何有用的东西。
您可以传递用户对象并获取详细信息。之后您可以将其添加到用户对象本身。
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;
}),
);
}),
...
我认为您需要先使用用户登录,才能获取 UserCredential 数据。
signInWithEmailAndPassword(auth, email, password)
.then((userCredential) => {
// Signed in
const user = userCredential.user;
// ...
})
那么就可以单独使用
getAdditionalUserInfo
方法
import {getAdditionalUserInfo} from "firebase/auth"
const { isNewUser } = getAdditionalUserInfo(userCredential)