Angular 角度2,火基->;SignInWithRedirect()

Angular 角度2,火基->;SignInWithRedirect(),angular,firebase,firebase-authentication,google-authentication,Angular,Firebase,Firebase Authentication,Google Authentication,Firebase使用SignInWithRedirect()函数,它登录,但是。用户变量返回null,也无法登录到主页。相反,它总是重定向并循环回同一登录页面。我怎样才能做到这一点 Google登录类型脚本代码如下所示 googleLogin(){ var provider = new firebase.auth.GoogleAuthProvider(); var profile = firebase.auth().currentUser; provider.addScope('htt

Firebase使用SignInWithRedirect()函数,它登录,但是。用户变量返回null,也无法登录到主页。相反,它总是重定向并循环回同一登录页面。我怎样才能做到这一点

Google登录类型脚本代码如下所示

googleLogin(){

var provider = new firebase.auth.GoogleAuthProvider();  
var profile = firebase.auth().currentUser; 

provider.addScope('https://www.googleapis.com/auth/contacts.readonly');
provider.addScope('https://www.googleapis.com/auth/userinfo.email'); 

  if (!profile) {   
    this.afauth.auth.signInWithRedirect(provider);

    firebase.auth().getRedirectResult().then((gsignres) => {

        if(gsignres.user != null){
          alert('redirect success!');
          this.navCtrl.setRoot(HomePage);
        } else{
          alert('Sign in Failed!');
        }


      }).catch((err) => {
        alert(err);
      });  

  } else {
    alert('else part of if');
    this.navCtrl.setRoot(HomePage);
    alert('root set!!!!');
  }
}

你有一个无限循环。您先调用
signInWithRedirect
,然后依次调用
getRedirectResult
。每次返回页面时,您都会尝试登录

您需要做的是首先通过以下方式确定用户状态:
firebase.auth().onAuthStateChanged((用户)=>{
如果(用户){
//已经登录。
}否则{
//未登录。
}
})

如果没有用户,则显示一个登录按钮,单击该按钮,调用
signInWithRedirect

如果有用户,如果要获取登录返回的凭据,可以调用
getRedirectResult()
。虽然只有用户刚刚登录时,此选项才可用,否则为空。

您有一个无限循环。您先调用
signInWithRedirect
,然后依次调用
getRedirectResult
。每次返回页面时,您都会尝试登录

您需要做的是首先通过以下方式确定用户状态:
firebase.auth().onAuthStateChanged((用户)=>{
如果(用户){
//已经登录。
}否则{
//未登录。
}
})

如果没有用户,则显示一个登录按钮,单击该按钮,调用
signInWithRedirect

如果有用户,如果要获取登录返回的凭据,可以调用
getRedirectResult()
。虽然只有用户刚登录时才可用,否则为空。

非常感谢您的回复。但是我删除了getredirectresult()并测试了代码。我认为这是signinwithredirect()的问题。我尝试在signinwithredirect()之后将根页面设置为主页。登录后,它会推送主页视图,但过了一会儿,它会再次返回登录页面。我还添加了上面的give代码片段,以检查用户是否已经登录。但这不是问题所在。你能帮我吗?谢谢!谢谢你的回复。但是我删除了getredirectresult()并测试了代码。我认为这是signinwithredirect()的问题。我尝试在signinwithredirect()之后将根页面设置为主页。登录后,它会推送主页视图,但过了一会儿,它会再次返回登录页面。我还添加了上面的give代码片段,以检查用户是否已经登录。但这不是问题所在。你能帮我吗?谢谢!