firebase身份验证自定义属性失败

时间:2017-10-29 07:16:58

标签: javascript firebase-authentication

我一直在组建一个网站,我一直在使用最新的firebase脚本和所有内容。 当我请求创建自定义用户属性时,它会说它未定义'。

CustomAttributes:

ownedavatars

代码:

注册

var user = firebase.auth().currentUser;
user.updateProfile({
  displayName: //username,
  photoURL: //icon,
  points: 0,
  ownedavatars: "default"
}).then(function() {
  user.sendEmailVerification().then(function() {
    //it would save email and password and then redirect here
  }).catch(function(error) {
    console.log(error.message);
  });
}).catch(function(error) {
  console.log(error.message);
});

登录

var listofavatars;
firebase.auth().signInWithEmailAndPassword(email, password).then(function() {
  var user = firebase.auth().currentUser;
  if (user != null) {
    document.getElementById("user").innerHTML = user.displayName;
    if (user.points == undefined) {
      document.getElementById("points").innerHTML = "0p";
    } else {
      document.getElementById("points").innerHTML = user.points + "p";
    }
    listofavatars = user.ownedavatars;
    if (user.photoURL == "default") {
      document.getElementById("avatar").src = //would pull default;
    } else {
      document.getElementById("avatar").src = //would pull any other icon saved; 
    }
  }
}).catch(function(error) {
  alert(error.message + " Code:" + error.code);
});

1 个答案:

答案 0 :(得分:0)

您无法使用updateProfile来保存任意自定义用户变量。此API目前仅支持photoURL和displayName`。要保存其他用户数据,必须使用单独的数据库来执行此操作。您可以使用Firebase实时数据库或Firestore来执行此操作。以下是如何安全保存用户特定数据的示例:https://firebase.google.com/docs/database/security/user-security

如果您需要为基于角色的访问控制保存用户特定数据,则可以使用Firebase Admin SDK设置自定义用户属性: https://firebase.google.com/docs/auth/admin/custom-claims

但是,强烈建议将此自定义用户数据用于访问控制。对于其他数据,请使用如上所述的专用数据库。