在验证Android时无法在Firebase中添加

时间:2017-12-21 11:05:09

标签: java android firebase firebase-authentication

当我进行身份验证时,我无法在firebase中添加评论。

有我的规则。

{
    "rules": {
        ".read": true,
        ".write": "auth != null"
    }
}

我的活动,我测试用户在推入firebase之前是否为空。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String baseUrl = "url";
        final Firebase fb = new Firebase(baseUrl+"/comments");
        final EditText et = (EditText) findViewById(R.id.comment);
        final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
        Button btn = (Button) findViewById(R.id.send);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(user != null)
                    fb.push().child("comment").setValue(et.getText().toString());
            }
        });
    }

}

错误 我进入日志

  

W / RepoOperation:setValue at / comments / -L0shVMfCJWab7_5ltnO / comment failed:FirebaseError:Permission denied

当我将写入规则更改为true时,它可以正常工作。

3 个答案:

答案 0 :(得分:1)

我解决了这个问题,而是使用Firebase实例我使用了DatabaseReference。

这是代码

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    String baseUrl = "https://tpdevproject.firebaseio.com/";
    final DatabaseReference fb = FirebaseDatabase.getInstance().getReference("comments");
    final EditText et = (EditText) findViewById(R.id.comment);
    final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    Button btn = (Button) findViewById(R.id.send);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(user != null)
                    fb.push().child("comment").setValue(et.getText().toString());
            }
        });
    }

}

答案 1 :(得分:0)

您需要在firebase控制台中指定两个规则都为true -

{
    "rules": {
        ".read": true,
        ".write": true,
    }
}

答案 2 :(得分:0)

试试这个:

{
    "rules": {
        ".read": true,
        ".write": "auth !== null"
    }
}

请注意写规则中的!==,使用两个等号而不是一个。

此答案基于Firebase documentation on User Based Security中的一些示例。