是否可以在Firebase中为匿名身份验证设置displayName

时间:2014-03-29 02:47:10

标签: angularjs firebase angularfire

我使用Firebase使用匿名登录方法通过AngularFire进行简单登录,我想知道是否还要设置从

返回的用户对象的displayName属性
$scope.loginObj.$login('anonymous').then(function(user) {
  user.displayName // This is an empty string
}

我想设置displayName并将其保存回Firebase中,以便用户可以显示为该displayName属性。据我所知,你实际上并没有自己写简单登录。如果您正在使用电子邮件/密码身份验证和使用$scope.loginObj.$createUser('name', 'password')

等内容,那么它似乎是唯一一次写入的内容

1 个答案:

答案 0 :(得分:3)

这与您描述的方式不可能,但是,您可以这样做以获得相同的行为。

$scope.loginObj.$login('anonymous').then(function(user) {
  if (!user) return;
  $scope.userRef = (new Firebase('<Your Firebase>.firebaseio.com/users/')).child(user.uid);
  $scope.userRef.child('displayName').on('value', function (snapshot) {
    user.displayName = shapshot.val();
  });
});

// Then elsewhere in your code, set the display name and user.displayName will be updated automatically

$scope.userRef.child('displayName').set("DISPLAY NAME");

您甚至可以使用简单的安全规则进行备份:

{"rules":
  "users": {
    "$uid" {
      ".read": true,
      ".write": "$uid == auth.uid'
    }
  }
}

这可确保只有经过正确身份验证的用户才能修改自己的显示名称。