我已经在我的项目中实现了AuthGuard
和Firebase
登录的路由,并且我正在使用callbacks
来监听Firebase
登录的成功和失败并采取相应的行动。 / p>
successCallback(signInSuccessData) {
console.log("Received with Success!");
}
errorCallback(errorData) {
console.log("Login Failed!");
}
不过,firebaseui-angular的自定义回调在此处已针对匿名,电子邮件和Google登录正常运行。 (检查控制台中的回调)
https://stackblitz.com/edit/angular-qgcgn1
但是,当我添加AuthGuard
,AuthService
并将参数重定向到相同参数时,它仅响应Google登录。 (单击任何路由,并应在登录后进行相应重定向,请检查控制台)。我的意思是它正在登录我,但未调用回调,该回调应该在成功登录后将用户重定向到其页面。
https://stackblitz.com/github/sizilkrishna/app-angular-onlinetools
这是我登录后重定向用户的方式,
returnUrl: string;
constructor(
public auth: AuthService,
private router: Router,
private route: ActivatedRoute,
public afAuth: AngularFireAuth) { }
ngOnInit() {
this.route.queryParams.subscribe(
retUrl => {
this.returnUrl = retUrl.returnUrl || '/';
console.log("You are set to redirected to " + this.returnUrl);
}
);
}
successCallback(signInSuccessData) {
console.log("Child Callback, Logged in! Redirecting to " + this.returnUrl);
this.router.navigateByUrl(this.returnUrl);
}
errorCallback(errorData) {
console.log("Login failure!");
}
请为这个问题指导我。
谢谢。
答案 0 :(得分:0)
问题是您的角度代码而不是firebase-ui npm软件包。如果您从login.component.html中的div中删除*ngIf="!afAuth.auth.currentUser"
,那么您将看到在成功登录email后调用了回调“ successCallback(signInSuccessData)”。