0

我在學校項目中使用Firebase,並且我遇到同樣的問題一段時間...我查看過各種網站,但找不到任何具有相同問題的人..將驗證數據添加到Firebase數據庫

用戶身份驗證工作正常,但問題在於將用戶數據保存在數據庫中。 我有兩種可用的方式進行驗證:

  • 電子郵件和密碼;
  • Facebook。

隨着電子郵件和密碼,數據被成功地在數據庫中寫的,我用下面的JavaScript代碼:

function signUp(){ 
    //Get DOM data 
    const email = String(document.getElementById('TXTEmail').value); 
    const pass = String(document.getElementById('TXTPassword').value); 
    const name = String(document.getElementById('TXTNome').value); 
    const gender = document.registo.sexo.value; 
    const auth = firebase.auth(); 
    var promise = auth.createUserWithEmailAndPassword(email,pass); 
    promise.catch(e => console.log(e.message)); 

    firebase.database().ref('users/' + firebase.auth().currentUser.uid).set({ 
     name : name, 
     email : email, 
     gender : gender, 
     uid: firebase.auth().currentUser.uid 
    }); 
} 

但是,使用Facebook的功能時無法保存數據,我只能驗證用戶,和我使用的代碼如下:

function signUpFacebook(){ 
     var provider = new firebase.auth.FacebookAuthProvider(); 
     firebase.auth().signInWithRedirect(provider); 
     firebase.auth().getRedirectResult().then(function(result) { 
      if (result.credential) { 
       // This gives you a Facebook Access Token. You can use it to access the Facebook API. 
       var token = result.credential.accessToken; 
      } 
      // The signed-in user info. 
      var user = result.user; 
      const name = user.displayName; 
      const email = user.email; 
      const photo = user.photoURL; 
      if(user != 0) { 
       firebase.database().ref('users/' + user.uid).set({ 
        name: nome, 
        email: email, 
        photo: photo, 
        uid: user.uid 
       }); 
      } 
      //Tests only 
      if(user != 0){ 
       console.log("name: "+user.displayName); 
       console.log("email: "+user.email); 
       console.log("photoUrl: "+user.photoURL); 
       console.log("uid: "+user.uid); 
      } 
     }).catch(function(error) { 
      // Handle Errors here. 
      var errorCode = error.code; 
      var errorMessage = error.message; 
      // The email of the user's account used. 
      var email = error.email; 
      // The firebase.auth.AuthCredential type that was used. 
      var credential = error.credential; 

     }); 
    } 

而且我得到我的控制檯上輸出: Console output

name: Rafael Veloso 
email: rafael****@gmail.com 
photoUrl: scontent.xx.fbcdn.net/v/t1.0-1/s100x100/… 
uid: **HY43Tl******KoO6OhZjG**** 

而且,我database.rules.json是:

{ 
    "rules": { 
    ".read": true, 
    ".write": true 
    } 
} 

有誰知道的是,我有什麼問題? 謝謝。

+0

請將控制檯輸出作爲實際文本發佈,而不是圖片。爲什麼你不允許張貼圖片有很好的理由,這是其中之一。 –

+0

對不起@FrankvanPuffelen,輸出結果爲: name:Rafael Veloso email:rafael****@gmail.com photoUrl:https://scontent.xx.fbcdn.net/v/t1.0-1/s100x100 /13139253_951385514977558_8691565872507444364_n.jpg?oh=51b7c82e907fdfa411ccaf3c58afe224&oe=58904789 uid:** HY43Tl ****** KoO6OhZjG ***** –

回答

0

與火力地堡支持我設法解決我的問題:)

首先的幫助下,創建的.html文件一樣,在一個腳本:

因爲只有該,我仍然無法將用戶數據添加到實時數據庫,所以我更改了我的「進口」,我用這個:

<script src="https://www.gstatic.com/firebasejs/3.2.1/firebase-app.js"></script> 
<script src="https://www.gstatic.com/firebasejs/3.2.1/firebase-auth.js"></script> 
<script src="https://www.gstatic.com/firebasejs/3.2.1/firebase-database.js"></script> 
<script src="https://www.gstatic.com/firebasejs/3.5.0/firebase-messaging.js"></script> 
<script src="https://www.gstatic.com/firebasejs/3.2.1/firebase.js"></script> 

,只有當我改變爲如下,我能夠給用戶的數據保存在數據庫:

<!-- <script src="https://www.gstatic.com/firebasejs/3.2.1/firebase-app.js"></script> 
<script src="https://www.gstatic.com/firebasejs/3.2.1/firebase-auth.js"></script> 
<script src="https://www.gstatic.com/firebasejs/3.2.1/firebase-database.js"></script> 
<script src="https://www.gstatic.com/firebasejs/3.5.0/firebase-messaging.js"></script>--> 
<script src="https://www.gstatic.com/firebasejs/3.2.1/firebase.js"></script> 

但我覺得奇怪,誰能幫助,並解釋我爲什麼是制定出來的?

相關問題