我使用Firebase的简单登录通过AngularFire匿名登录方法,我想知道是否有办法设置从
返回的用户对象的displayName属性$scope.loginObj.$login('anonymous').then(function(user) {
user.displayName // This is an empty string
}
我想设置displayName并将其保存回Firebase中,以便用户可以显示为该displayName属性。据我所知,你自己并没有写任何东西给Simple Login。似乎只有当你使用电子邮件/密码认证时才会写入它使用$scope.loginObj.$createUser('name', 'password')
这在您描述的方式中是不可能的,但是,您可以这样做以获得相同的行为。
$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'
}
}
}
这确保只有经过正确身份验证的用户才能修改自己的显示名。