我是firebase的新手,所以如果我错过了一些明显的事情我会道歉。 我有电子邮件/密码注册。如果成功,我想在我的firebase中创建一个用户节点:user / uid并保存一些用户数据:
function signUp(){
console.log('ACTION > SIGNUP AS: ' + $("#loginEmail").val() + '...');
firebase.auth().createUserWithEmailAndPassword($("#loginEmail").val(), $("#loginPsw").val()).then(function(user) {
// Success
console.log('ACTION > SIGNUP SUCCESS');
console.log('-- SAVING PRIVATE DATA...');
var userRef = firebase.database().ref("users").child(firebase.auth().currentUser.uid);
userRef.update({"email": user.email, "displayName": user.displayName, "photoURL": user.photoURL});
}).catch(function(error){
var errorCode = error.code;
var errorMessage = error.message;
$("#loginErr").text(errorMessage);
});
}
但是当signUp被触发时,我收到一个错误:
FIREBASE WARNING: set at /users/Mcf4MbabvbQB9HzoYEd3Brqthlx2 failed: permission_denied
我尝试使用“set”而不是“update”并得到同样的错误。
我的火力基地规则是:
{"rules": {
"users": {
"$uid": {
".write": "$uid === auth.uid",
".read": "$uid === auth.uid"
}
}
}}
现在,如果我只是刷新页面,我可以运行下一个没有错误的代码:
firebase.database().ref().child('users').child(firebase.auth().currentUser.uid).set({"test": "1"});
我能够通过添加“.write”= true:
来实现它 {"rules": {
".write": true,
"users": {
"$uid": {
".write": "$uid === auth.uid",
".read": "$uid === auth.uid"
}
}
}}
然后用户可以在顶层写任何东西。 那么为什么我在用户注册后获得PERMISSION_DENIED,但是如果刷新页面则没有错误?