当我进行身份验证时,我无法在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时,它可以正常工作。
答案 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中的一些示例。