如何在 Firebase 中更新用户个人资料?

Ade*_*oro 3 javascript firebase firebase-authentication

我尝试更新用户配置文件并阅读此文档。但是,为什么我不能改变我的displayName?它总是给我null

它也给了我TypeError: userNow is null

我应该遵循哪一个来更新/编辑用户配置文件?

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Update User Profile</title>
        <script src="https://www.gstatic.com/firebasejs/4.11.0/firebase.js"></script>
        <script src="core.js">
        </script>
    </head>
    <body>
        <script>
            var authRef = firebase.auth();
            authRef.onAuthStateChanged(function(user) {
                if (user) {
                    console.log('Display name onAuthStateChanged : '+user.displayName);
                } else {
                    console.log('not login');
                }
            });
            
            
            var userNow = firebase.auth().currentUser;
            userNow.updateProfile({
                displayName: "Jane Q. User",
                photoURL: "https://example.com/jane-q-user/profile.jpg"
            }).then(function() {
                var displayName = userNow.displayName;
                var photoURL = userNow.photoURL;
            }, function(error) {
                
            });

        </script>
        <script src="js/jquery-3.3.1.min.js"></script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

Hak*_*anC 5

var userNow = firebase.auth().currentUser;函数开始包装你的代码。正如@Andre Kool 所说,您首先需要确保您参与了(因为它是异步操作,然后尝试将用户数据更新为:

    var authRef = firebase.auth();
    authRef.onAuthStateChanged(function(user) {
        if (user) {
            console.log('Display name onAuthStateChanged : '+user.displayName);
            _updateUserData();
        } else {
            console.log('not login');
        }
    });

    fucntion _updateUserData(){
      var userNow = firebase.auth().currentUser;
        userNow.updateProfile({
        displayName: "Jane Q. User",
        photoURL: "https://example.com/jane-q-user/profile.jpg"
      }).then(function() {
        var displayName = userNow.displayName;
        var photoURL = userNow.photoURL;
      }, function(error) {

      });
  }
Run Code Online (Sandbox Code Playgroud)