【问题标题】:Firebase displayName wont transfer to another page but mail doesFirebase displayName 不会转移到另一个页面,但邮件会
【发布时间】:2018-05-11 02:54:49
【问题描述】:

我对 Firebase 还很陌生,所以如果这是一个愚蠢的问题,我很抱歉。

所以我正在创建一个注册/登录页面。在注册页面上,一切正常,每个创建的用户都被分配了一个 displayName 值,该值来自表单中的输入。

function signUp() {
  // Get DOM elements
  var displayName = document.getElementById("first_name");
  var emailInput = document.getElementById("email");
  var passInput = document.getElementById("password");
  var submitBtn = document.getElementById("submitBtn");

  // Add login event
  submitBtn.addEventListener("click", e => {
    //Get email and password
    const email = emailInput.value;
    const pass = passInput.value;
    const auth = firebase.auth();
    // Sign up
    const promise = auth.createUserWithEmailAndPassword(email, pass);
    promise.catch(e => console.log(e.message));
    var user = firebase.auth().currentUser; 
      if (user) {
        console.log(user);
        var user = auth.currentUser;
        user.updateProfile({
          displayName: displayName.value
        });
      }
    });
}

但是..

当用户登录到新页面时,只有电子邮件被传输过来,displayName 设置为 null。我认为这是我登录脚本中“onAuthStateChanged”代码的问题。

function displayUserInfo() {
	firebase.auth().onAuthStateChanged(firbaseUser => {
		if (firbaseUser) {
			console.log(firbaseUser);
		}
		else {
			console.log("not logged in");
		}
	});
}

希望得到一些帮助:)

【问题讨论】:

    标签: javascript firebase firebase-authentication


    【解决方案1】:

    试试这个

    function signUp() {
        // Get DOM elements
        var displayName = document.getElementById("first_name");
        var emailInput = document.getElementById("email");
        var passInput = document.getElementById("password");
        var submitBtn = document.getElementById("submitBtn");
    
        // Add login event
        submitBtn.addEventListener("click", e => {
            //Get email and password
            const email = emailInput.value;
            const pass = passInput.value;
            const auth = firebase.auth();
            // Sign up
            const promise = auth.createUserWithEmailAndPassword(email, pass)
            .then(user => {
                console.log(user);
                user.updateProfile({
                    displayName: displayName.value
                });
            });
        }
    }
    

    【讨论】:

    • 那行不通。注册后使用它并没有给我一个 displayName。
    猜你喜欢
    • 2017-03-02
    • 2021-01-20
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 2019-04-28
    相关资源
    最近更新 更多