在Angular2中的Auth之后重定向

时间:2017-03-26 17:46:54

标签: angular firebase login firebase-authentication

所以我有一个简单的问题。我有一个登录页面,其中包含一些用于登录的社交媒体图标。我想要实现的是,当他们单击按钮并对其进行授权时,他们会被重定向到新页面。但是,现在发生的事情是它们只是保留在/ 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
    });
  }

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

基于AngularFire2文档,this.af.auth.login()返回一个Promise(技术上是firebase.Promise<FirebaseAuthState>)。您需要在.then()调用中添加login()子句,以便成功解决Promise并相应地重定向。

这里是一个粗略的示例,说明如何将用户重定向回登录,假设您正在使用控制器上的Angular Routerthis.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('/');
  });
}