我对Firebase的某些行为感到有些困惑。我从未使用过旧版本,但我相信getRedirectResult是新版本,因为他们与Google携手合作。

我有一个SPA,正在将Vue.js与vue-router和Firebase结合使用。有一个登录页面,然后是另一个 View ,用户可以登录或不登录。登录是通过重定向完成的。加载第二个 View 时,我在vue-router“激活”钩子(Hook)中检查getRedirectResult,如果有用户,请使用用户信息进行其他操作。

因此问题继续进行:
1.我们在第二页上。用户登录。将调用getRedirectResult并找到一个用户。好极了。
2.用户注销。我们回到了登陆页面。
3.我们单击一个按钮,将我们带到第二页。调用getRedirectResult并查找前一个用户。什么?!没有!

我找不到任何东西是否需要丢失,是否需要进行某种形式的额外检查,或者在注销后以某种方式强行刷新页面,以至于忘记了最后一个用户已登录,或者是否将其视为错误。任何帮助将不胜感激!

在vue组件路由器“激活”钩子(Hook)的第二页上进行getRedirectResult调用:
firebase.auth()。getRedirectResult()
.then((结果)=> {
返回result.user;
})。then((user)=> {
// 做东西。
});


更新:通过在注销回调中执行硬页刷新来解决,如下所示:
firebase.auth()。signOut()
.then(()=> {window.location.href ='/'});

最佳答案

使用一个标志来检测getRedirectResult()是否已被处理。即

firebase.auth().getRedirectResult()
  .then((result) => {
    return result.user;
  }).then((user) => {
    if (this.authRedirected)
      return; // Skip

    // Do stuff.

    this.authRedirected = true; // Mark redirected
  });

关于javascript - 注销后正在调用Firebase getRedirectResult,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39089901/

10-09 08:28