所以我有一个简单的问题。我有一个登录页面,其中包含一些用于登录的社交媒体图标。我想要实现的是,当他们单击按钮并对其进行授权时,他们会被重定向到新页面。但是,现在发生的事情是它们只是保留在/ login页面上。
这是我的HTML,第一个routerLink是我尝试解决问题,但它只是让用户回到主页,即使他们没有完成登录过程。
<div class="row omb_row-sm-offset-3 omb_socialButtons">
<div class="col-xs-4 col-sm-2">
<a [routerLink]="['/']" (click)="loginFacebook()" class="btn btn-block btn-social btn-facebook">
<i class="fa fa-facebook"></i> Facebook
</a>
</div>
<div class="col-xs-4 col-sm-2">
<a (click)="loginTwitter()" class="btn btn-block btn-social btn-twitter">
<i class="fa fa-twitter"></i> Twitter
</a>
</div>
<div class="col-xs-4 col-sm-2">
<a (click)="loginGoogle()" class="btn btn-block btn-social btn-google">
<i class="fa fa-google"></i> Google
</a>
</div>
</div>
以下是他们的JS / TS代码段
loginGoogle(){
this.af.auth.login({
provider:AuthProviders.Google,
method: AuthMethods.Popup
});
}
loginFacebook(){
this.af.auth.login({
provider: AuthProviders.Facebook,
method: AuthMethods.Popup
});
}
loginTwitter(){
this.af.auth.login({
provider: AuthProviders.Twitter,
method: AuthMethods.Popup
});
}
非常感谢任何帮助。
答案 0 :(得分:1)
基于AngularFire2文档,this.af.auth.login()
返回一个Promise(技术上是firebase.Promise<FirebaseAuthState>
)。您需要在.then()
调用中添加login()
子句,以便成功解决Promise并相应地重定向。
这里是一个粗略的示例,说明如何将用户重定向回登录,假设您正在使用控制器上的Angular Router
类this.router
:< / p>
loginGoogle() {
this.af.auth.login({
provider:AuthProviders.Google,
method: AuthMethods.Popup
}).then((success) => {
// Redirect the user back to the home page
this.router.navigateByUrl('/');
});
}