我必须包括什么才能知道这是否是用户?

时间:2019-08-17 01:16:53

标签: firebase firebase-authentication

有人打开每个新页面,我想知道他是否是登录用户。

我这样做(是不是有错?Firebase可能还没有准备好?):

if(firebase.auth().currentUser)

如果这是一个用户,我只想 一些东西到数据库。 但是我有一种感觉,我为此目的包括了很多东西。

所以我必须确定要启动该应用程序:

 <!-- Initialize Firebase -->
  <script>
       var config = {
         apiKey: "xxxxxxxxxxxxxxxxxxxxxxxx",
         authDomain: "xxx.firebaseapp.com",
         databaseURL: "https://xx.firebaseio.com",
         projectId: "xx",
         storageBucket: "xx.appspot.com",
         messagingSenderId: "xxx"
       };
       firebase.initializeApp(config);
       const db = firebase.firestore();
  </script>

然后,其中哪些是 不必要的?

     <script src="https://www.gstatic.com/firebasejs/6.2.0/firebase-app.js"></script>
     <script src="https://www.gstatic.com/firebasejs/6.2.0/firebase-firestore.js"></script>
     <script src="https://www.gstatic.com/firebasejs/6.2.0/firebase-storage.js"></script>
     <script src="https://www.gstatic.com/firebasejs/6.2.0/firebase-auth.js"></script>
     <script src="https://www.gstatic.com/firebasejs/6.2.0/firebase-functions.js"></script>

2 个答案:

答案 0 :(得分:2)

您可以实时检查用户身份验证更改,并执行操作(更改全局变量,状态变量,更新数据库值等),您只需要firebase-app和firebase-auth,firebase-firestore是可选的因为您可以在api /服务器(firebase-admin)中或通过http请求写入数据:

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
  } else {
    // No user is signed in.
  }
});

请谨慎使用数据库规则来处理数据库文字

编辑:这是一个在没有Firestore库的情况下如何添加数据的示例:

const data = {
  fields: {
    name: { stringValue: 'Joe' },
    email: { stringValue: 'joe@mail.com' },
    message: { stringValue: 'Hello' },
    phone: { stringValue: '123456' },
    modified: { timestampValue: new Date() },
  },
};

$.ajax({
  url: 'https://firestore.googleapis.com/v1/projects/YOURDB/databases/(default)/documents/clients/someclient/contact',
  type: 'POST',
  data: JSON.stringify(data),
  headers: {
    'Content-Type': 'application/json',
  },
  dataType: 'json',
  success() {
    console.log('Document successfully written!');
    return true;
  },
  error(err) {
    console.error('Error saving document', err);
    return false;
  },
})

答案 1 :(得分:1)

使用firebase.auth()仅需要firebase-appfirebase-auth,但我可以看到您也在使用数据库,因此也需要firebase-firestore