Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript VueJS+;Firebase身份验证可以';在加载脚本之前不能访问会话_Javascript_Firebase_Vue.js_Firebase Authentication - Fatal编程技术网

Javascript VueJS+;Firebase身份验证可以';在加载脚本之前不能访问会话

Javascript VueJS+;Firebase身份验证可以';在加载脚本之前不能访问会话,javascript,firebase,vue.js,firebase-authentication,Javascript,Firebase,Vue.js,Firebase Authentication,所以我在做一个项目,我有点挣扎。。。 我正在使用VueJS进行前端和Firebase身份验证来登录用户 我正在尝试确定用户当前是否使用firebase.auth().currentUser登录 (如果返回null,则没有用户登录)听起来很简单,对吗 我正在vueJScreated()函数中运行currentUser()。但是,运行firebase.auth().currentUser这里似乎总是返回null。但是,如果我使用set timeout方法,那么它就能够获取用户数据。在我看来,vue正

所以我在做一个项目,我有点挣扎。。。 我正在使用VueJS进行前端和Firebase身份验证来登录用户

我正在尝试确定用户当前是否使用
firebase.auth().currentUser登录
(如果返回null,则没有用户登录)听起来很简单,对吗

我正在vueJS
created()函数中运行currentUser()。但是,运行
firebase.auth().currentUser这里似乎总是返回null。但是,如果我使用set timeout方法,那么它就能够获取用户数据。在我看来,vue正在尝试在加载数据之前获取数据

我希望这不是很难理解-我对Vue和firebase还很陌生! 请在下面找到我的代码片段

    Vue.config.devtools = true;
    var app = new Vue({
        el: '#app',
        data: {
          user: '',
          loggedIn: false
        },

        created() {
              var user = firebase.auth().currentUser; 
              if (user != null){
                this.user = user;
                this.loggedIn = true;
              } else {
                this.loggedIn = false;
              }
        }
    })
下面是我在页面正文底部加载的firebase脚本

<script src="https://www.gstatic.com/firebasejs/7.14.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.15.5/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.14.1/firebase-database.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.14.1/firebase-analytics.js"></script>
<script src="js/firebaseConfig.js" type="text/javascript"></script>

从本质上讲,如果不使用
setTimeout()
方法,我如何解决这个问题?还有firebase如何获得此会话,哪个脚本处理此会话?

firebase.auth()。只有在SDK确定用户实际登录后,它才会包含实际用户对象。目前还不能保证具体需要多长时间

找出何时发生这种情况的首选方法是使用身份验证状态观测器,如中所示

您可以使用此回调来确定何时为单个用户呈现内容


我还建议您在中阅读更多有关Firebase Auth SDK行为的信息。

FYI您的脚本包含不同的版本。这可能会造成问题。它们应该是同一个版本。
firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
    // ...
  } else {
    // User is signed out.
    // ...
  }
});