重新加载页面后未执行onAuthStateChanged

时间:2018-11-30 16:28:46

标签: typescript firebase vue.js

这是我的firebaseApp.ts文件:

import firebase from "firebase/app";
import "firebase/firestore";   

const config = {
  ...
};

let fb = firebase.initializeApp(config);
const database = fb.firestore();
database.settings({ timestampsInSnapshots: true });

fb.auth().onAuthStateChanged(() => {
  Vue.prototype.$isLoggedIn = firebase.auth().currentUser;
});

export const db = database;

我想从App.vue到达isLoggedIn,但是当我重新加载页面并且用户登录时,不会执行onAuthStateChanged。我必须单击某些东西才能获得“真实”的价值。在刷新后,我还应该在哪里初始化isLoggedIn以使其正常工作?

2 个答案:

答案 0 :(得分:0)

如果您执行app.firestore();,则还应该按照以下步骤进行app.auth()....

let app = firebase.initializeApp(config);
const database = app.firestore();
database.settings({ timestampsInSnapshots: true });

app.auth().onAuthStateChanged(() => {
  Vue.prototype.$isLoggedIn = firebase.auth().currentUser;
});

不确定app是传递firebase.initializeApp(config);的const的最佳名称,您可以简单地调用firebasefb

答案 1 :(得分:0)

我自己解决了!我必须像这样在我的main.ts中放置onAuthStateChanged:

let app: Vue;

firebase.auth().onAuthStateChanged(function(user) {
  if (!app) {
    Vue.prototype.$isLoggedIn = firebase.auth().currentUser;
    new Vue({
      router,
      store,
      render: h => h(App)
    }).$mount("#app");
  }
});

我是Vue的新手,谢谢您的帮助! :)