javascript - Firebase 身份验证 - onAuthStateChanged 多次调用

标签 javascript firebase-realtime-database firebase-authentication

每当我渲染主页或帐户页面时,我的 session 有时会丢失。我有一个名为 isSignedIn() 的函数,用于检查 uid 是否存在。有时,当我刷新主页时,它会返回 false。当我点击我的帐户端点时,它也会返回 false,即使在上一页上它是 true 。关于为什么会发生这种情况有什么想法吗?

我的应用程序如何工作: 当用户登录时,我从客户端获取 uid 并点击身份验证端点。

function createServerSession(user) {

    // Get secret token from Firebase for current session

  firebase.auth().currentUser.getToken(true)
    .then(function(idToken) {

   // Get session on my Node server for server user identification
  if (idToken) {

    fetch('/firebaseauth?idtoken=' + encodeURIComponent(idToken) + '&username=' + encodeURIComponent(user.email.split('@')[0]), {
      credentials:'include'
    }).then(function(data){
      if (window.location.pathname === '/' && document.getElementById('login').innerHTML.trim() === 'Join') {
        redirect('/');
      }
      if (window.location.href.includes('login')) {
        redirect('/');
      }
    })
  }

})
}

然后它会调用我的 node.js 代码来存储 session :

app.get('/firebaseauth', function (req, res) {
if (! req.session.idToken) {
firebase.auth().verifyIdToken(req.query.idtoken).then(function(decodedToken)            {
  req.session.username = req.query.username
  req.session.idToken = decodedToken.uid;
  req.session.save(function(){
    res.json(true)
  })
})

这种方法在大多数情况下都可以正常工作,但在某些情况下它会发送多个请求。最高金额一度达到7400。任何指导表示赞赏。

最佳答案

自从发布此问题后,我已将主机从 GAE 切换到 Heroku,并修复了该问题。我知道 Node.js 的功能处于测试阶段,所以也许就是这样

关于javascript - Firebase 身份验证 - onAuthStateChanged 多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39384882/

相关文章:

arrays - 在 Firebase SWIFT 中查询数组

ios - firebase身份验证监听器和网络连接

firebase - 未处理的异常:NoSuchMethodError:在空上调用了 'findAncestorStateOfType'方法

javascript - 无法在 node-cron 调度方法中获取数据

对现有对象调用 new Object() 的 Javascript 优化

javascript - 如何在 AngularJS 中同时处理 DOM 操作和状态更改?

javascript - 如何获取firebase id

ios - 当 userID 改变时处理 Firebase 观察者?

javascript - vue 最奇怪的行为 - 注释代码正在运行

javascript - 带 JS 的 Internet Explorer 11 性能