成功认证后,Firebase Google signInWithRedirect不会重定向到指定页面

时间:2019-03-03 10:37:38

标签: javascript firebase vue.js firebase-authentication vue-router

以下问题需要一点帮助/解释。我正在为项目使用Vue和Firebase。

我正在尝试通过调用 signInWithRedirect 来设置Firebase Google登录。身份验证本身可以工作,但是不完全符合我的要求。

在进行身份验证后,我需要它重定向到/ dashboard,但目前在短暂加载后它会重定向回到/ login页面。

我知道我必须使用 getRedirectResult ,但是我不确定如何准确地调用它。如果有人能解释我如何正确编写代码以获得所需结果,将不胜感激。

.signInWithRedirect(fb.googleProvider)
.then(credential => {
this.$store.commit("setCurrentUser", credential.user)
fb.usersCollection.doc(credential.user.uid).set({
}).then(() => {
this.$store.dispatch("fetchUserProfile")
this.updateGmailData()
this.$router.push("/dashboard")
}).catch(err => {
console.log(err)
})
}).catch(err => {
console.log(err);
});
},

我相信我的初始身份验证应该看起来像这样-

googleLogin() {
fb.auth.signInWithPopup(fb.googleProvider)
}

然后,我应该为 getRedirectResult 设置功能,该功能应该将路由器推到/ dashboard吗?

如何进行重定向以等待getRedirectResult并在获得所需结果后重定向/ dashboard。

我不知道如何实现它。

2 个答案:

答案 0 :(得分:3)

signInWithRedirect将重定向回到完成登录的页面。然后,您可以在用户登录后使用getRedirectResult()onAuthStateChanged侦听器重定向到仪表板。

在登录按钮点击处理程序中,致电:

// This will redirect to IdP for sign-in.
firebase.auth.signInWithRedirect(fb.googleProvider);

然后在同一页面上,您可以设置一个侦听器:

firebase.auth().onAuthStateChanged((user) => {
  if (user) {
    // User signed in, you can get redirect result here if needed.
    // ...
    this.$router.push("/dashboard");
    // ....
  } else {
    // Show sign in screen with button above.
  }
});

答案 1 :(得分:0)

这些对我有用:

googleLogin(){

  this.afAuth.auth.signInWithPopup(new  
  firebase.auth.GoogleAuthProvider()).then(result=>{

     console.log(result)
  }).catch(err=>{
     console.log(err)
  })
}