2017-03-26 45 views
0

所以我有一个快速的问题。我有一个登录页面,其中有一些社交媒体图标用于登录。我想要实现的是,当他们单击按钮并对其进行授权时,它们会被重定向到新页面。但是,现在发生的事情是他们只是保留在/登录页面上。Angular2 Auth后重定向

这是我的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> 

这里是他们

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 
    }); 
    } 

的JS/TS的代码段的任何帮助感激。

回答

1

基于AngularFire2文档,this.af.auth.login()返回Promise(技术上为firebase.Promise<FirebaseAuthState>)。您需要将.then()子句添加到您的login()调用中,以处理Promise的成功解析并相应地重定向。

这里是你如何可以将用户重定向回登录一个粗略的例子,假设你使用的角度Router类控制器的this.router

loginGoogle() { 
    this.af.auth.login({ 
    provider:AuthProviders.Google, 
    method: AuthMethods.Popup 
    }).then((success) => { 
    // Redirect the user back to the home page 
    this.router.navigateByUrl('/'); 
    }); 
}