我正在尝试将Firebase集成到我的Android应用程序中。我已按照fire base记录的步骤进行操作。当我尝试发送数据时,我无法发送。我在回调中遇到错误
**Permission denied**
并且回调中的错误代码为 -3
我在很多地方都在堆栈溢出中搜索了相对答案,但它对我不起作用。因为这是非常著名的线程
在此线程中,提到需要在定义规则的数据库部分中添加以下代码。下面是代码
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
当我去那个线程中提到的地方(进入数据库部分,然后进入规则区域)时,我已经找到了一些代码。并在下面提到该代码
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
我的问题是在通信数据库时出现权限被拒绝错误。当我按照线程中的说明添加代码时,Fire base无法识别该代码。如果需要,在什么地方放置代码是正确的?还是为什么我会收到该错误?我想念什么吗?
下面是我用于Firebase通信的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
mDatabaseReference = FirebaseDatabase.getInstance().getReference();
DatabaseReference databaseReference = mDatabaseReference.child("users");
//Get Firebase auth instance
//auth = FirebaseAuth.getInstance();
btnSignIn = findViewById(R.id.sign_in_button);
btnSignUp = findViewById(R.id.sign_up_button);
inputEmail = findViewById(R.id.email);
inputPassword = findViewById(R.id.password);
progressBar = findViewById(R.id.progressBar);
btnResetPassword = findViewById(R.id.btn_reset_password);
btnResetPassword.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//startActivity(new Intent(SignupActivity.this, ResetPasswordActivity.class));
}
});
btnSignIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
btnSignUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String email = inputEmail.getText().toString().trim();
String password = inputPassword.getText().toString().trim();
if (TextUtils.isEmpty(email)) {
Toast.makeText(getApplicationContext(), "Enter email address!", Toast.LENGTH_SHORT).show();
return;
}
if (TextUtils.isEmpty(password)) {
Toast.makeText(getApplicationContext(), "Enter password!", Toast.LENGTH_SHORT).show();
return;
}
if (password.length() < 6) {
Toast.makeText(getApplicationContext(), "Password too short, enter minimum 6 characters!", Toast.LENGTH_SHORT).show();
return;
}
progressBar.setVisibility(View.VISIBLE);
User user = new User();
user.setEmail(email);
user.setPassword(password);
user.setUserType(1);
mDatabaseReference.child("users").setValue(user, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(@Nullable DatabaseError databaseError, @NonNull DatabaseReference databaseReference) {
progressBar.setVisibility(View.GONE);
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
dataSnapshot.exists();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
databaseError.getCode();
}
});
}
});
}
});
}
注意: /用户处的setValue失败:DatabaseError:权限被拒绝,这是我正在获取的日志。