Firebase Admin SDK-使用自定义字段创建用户

时间:2018-06-29 19:22:44

标签: node.js firebase firebase-authentication firebase-admin

我一直在关注Firebase SDK Admin - Manager User文档,并且使用该系统可以为我找到所有东西。无论哪种方式,我都希望使用诸如名,姓,国籍等字段来扩展我的用户信息。

现在我正在使用Vue.JS(前端),Axios(Http客户端)和Express.js(服务器)来管理我的项目,这就是我创建用户的方式:

Vue.JS createUser方法:

createUser() {
      axios.post('http://localhost:3000/users',
      {
        username: this.username,
        email: this.email,
        firstName: this.firstName,
        lastName: this.lastName,
        password: this.password,
      }).then(r => {
        console.log(r)
      }).catch(e => {
        console.log(e)
      })
      // createUser
    }

每个字段:usernameemailfirstName等……从普通的HTML表单中获得了价值,它们工作得很好。

这是我在服务器端的“用户创建”路线:

router.post('/', function (req, res, next) {
  firebase.auth().createUser({
    email: req.body.email,
    username: req.body.username,
    firstName: req.body.firstName,
    lastName: req.body.lastName,
    emailVerified: false,
    password: req.body.password,
    disabled: false
  }).then(function(userRecord) {
    console.log("Successfully created new user:", userRecord.uid);
  }).catch(function(error) {
    console.log("Error creating new user:", error);
  });
});

这是我检索用户信息的方式:

router.get('/', function(req, res, next) {
  firebase.auth().listUsers()
  .then(function(listUsersResult) {
    res.send(listUsersResult.users);
  }).catch(function(error) {
    console.log("Error listing users:", error);
  })
});

问题是我无法获取添加的自定义字段(或者它们根本不存在)。这是我使用下一种方法获取数据后的图片:

getItems() {
      axios.get('http://localhost:3000/users').then(r => {
        this.users = r.data
      }).catch(e => {
        console.log(e)
      })
    },

enter image description here

有没有一种方法可以在用户创建时设置自定义字段,或者(如果我的过程正确的话)有一种方法来检索它们?

2 个答案:

答案 0 :(得分:2)

Firebase用户不可自定义,很遗憾,您无法向该用户添加自定义字段... check out these docs for the properties of this object。还请检查this question & answer,其中弗兰克(Frank)解释说您需要单独存储任何其他信息...这通常是在数据库的表(命名为 /userDetails)中完成的

答案 1 :(得分:0)

创建后,您可以立即设置用户的个人资料。

firebase.auth().createUserWithEmailAndPassword(
    email,
    password,
).then(credential => {
    if (credential) {
        credential.user.updateProfile({
            displayName: username
        })
    }
}