在使用Angular和Firebase身份验证系统时,如果始终返回undefined或null,可能是由于以下几个原因引起的:
import { AngularFireAuth } from '@angular/fire/auth';
import { auth } from 'firebase/app';
constructor(private afAuth: AngularFireAuth) { }
ngOnInit() {
this.afAuth.authState.subscribe(user => {
if (user) {
// 用户已登录
console.log(user);
} else {
// 用户未登录
console.log('User not logged in');
}
});
}
import { AngularFireModule } from '@angular/fire';
import { AngularFireAuthModule } from '@angular/fire/auth';
const firebaseConfig = {
// Firebase配置
};
@NgModule({
imports: [
AngularFireModule.initializeApp(firebaseConfig),
AngularFireAuthModule
],
// ...
})
export class AppModule { }
确保在Firebase控制台中启用了身份验证提供程序,并正确设置了相应的身份验证参数(如Google登录、电子邮件/密码登录等)。
如果使用了Angular路由,确保身份验证状态的订阅位于路由初始化之后。可以使用ngAfterViewInit生命周期钩子来确保这一点:
ngAfterViewInit() {
this.afAuth.authState.subscribe(user => {
if (user) {
// 用户已登录
console.log(user);
} else {
// 用户未登录
console.log('User not logged in');
}
});
}
通过检查上述步骤,您应该能够解决返回undefined或null的问题,并正确获取用户的身份验证状态。