在Angular Firebase身份验证中,当您尝试使用自定义用户模型(userModel)时,会出现问题。这是因为Firebase默认使用FirebaseUser模型。要解决这个问题,您可以使用Firebase的自定义身份验证以及Angular的RxJS。以下是解决方法的代码示例:
import { AngularFireAuth } from '@angular/fire/auth'; import * as firebase from 'firebase/app'; import { Observable } from 'rxjs'; import { Injectable } from '@angular/core';
@Injectable({ providedIn: 'root' }) export class UserModel { displayName: string; email: string; uid: string; photoURL: string; }
@Injectable({
providedIn: 'root'
})
export class AuthService {
user$: Observable
constructor(private afAuth: AngularFireAuth) {
this.user$ = this.afAuth.authState.pipe(
switchMap(user => {
if (user) {
// 如果用户已经登录,则返回自定义用户模型
return this.afs.docusers/${user.uid}
).valueChanges();
} else {
// 如果用户未登录,则返回null
return of(null);
}
})
)
}
// 用户登录功能 signInWithGoogle() { return this.afAuth.signInWithPopup(new firebase.auth.GoogleAuthProvider()) }
// 用户注册功能 signUpWithEmail(email: string, password: string) { return this.afAuth.createUserWithEmailAndPassword(email, password); }
// 用户注销功能 signOut() { return this.afAuth.signOut(); } }
通过这些代码示例,用户可以成功使用自定义用户模型解决Angular Firebase身份验证问题。