添加用户节点的Firebase仅为新用户提供错误:PERMISSION_DENIED

时间:2017-10-18 18:44:35

标签: firebase firebase-authentication

我是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,但是如果刷新页面则没有错误?

0 个答案:

没有答案