簡體   English   中英

Google Firebase網站:用戶身份驗證和數據庫寫入

[英]Google firebase web: User authentication and database write

我剛剛為我的Webapp開始使用Firebase,這是下面的代碼和問題。

<script src="https://www.gstatic.com/firebasejs/4.1.2/firebase.js"></script>
<script src="https://www.gstatic.com/firebasejs/4.1.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/4.1.1/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/4.1.1/firebase-database.js"></script>
<script>
    // Initialize Firebase
    var config = {
      ...
    };
    firebase.initializeApp(config);
</script>

<script>
    function handleSignUp() {
      var email = document.getElementById('email').value;
      var password = document.getElementById('password').value;
      if (email.length < 4) {
        alert('Please enter an email address.');
        return;
      }
      if (password.length < 4) {
        alert('Please enter a password.');
        return;
      }

      firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {
        // Handle Errors here.
        var errorCode = error.code;
        var errorMessage = error.message;
        if (errorCode == 'auth/weak-password') {
          alert('The password is too weak.');
        } else {
          alert(errorMessage);
        }
        console.log(error);        
      });
    }

    function initApp() {
      document.getElementById('quickstart-sign-up').addEventListener('click', handleSignUp, false);
    }

    window.onload = function() {
      initApp();
      firebase.auth().onAuthStateChanged(function(user) {
        if (user) {
          console.log('yes');

我想在此步驟中在Firebase數據庫中保持數據持久性。

        } else {
          console.log('no');
        }
      });
    };

</script>

問題是,每當我刷新頁面時,通過用戶身份驗證,控制台就會返回“是”(當我添加數據庫推送邏輯時,每當刷新頁面時,一次又一次地保存數據。我曾嘗試移動console.log或將數據庫推送到.onAuthStateChange以及我的initApp()handleSignUp()函數,但無濟於事。

根據firebase文檔 ,我也嘗試了以下方法:

var user = firebase.auth().currentUser;

if (user) {
  // User is signed in.
} else {
  // No user is signed in.
}

但是,這幾乎總是將console.log返回為No。我在想,由於進行身份驗證需要花費一些時間,因此用戶檢查正在跳過身份驗證,並且看起來好像沒有用戶通過身份驗證。 我想問的是我希望用戶注冊(並自動登錄,無論如何使用firebase都會發生)和用戶詳細信息(以及我要求用戶在注冊時填寫的其他詳細信息)保存在firebase數據庫中只有時間。 任何指針在這里將不勝感激。

認為我明白了。 然后(承諾)的使用:

firebase.auth().createUserWithEmailAndPassword(email, password).then(function() {
        var user = firebase.auth().currentUser;
        console.log(user.email);
      }).catch(function(error)

創建用戶后,該功能將立即起作用(將在數據庫中進行數據持久化),並且由於它不依賴於用戶是否經過身份驗證以及唯一的電子郵件,因此永遠不會重復此步驟,因此只需一次數據保存在數據庫中。 已經多次瀏覽了文檔,以某種方式錯過了它。 道歉的家伙。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM