如何解决尝试使用Firebase Realtime数据库进行setValue时,获得权限被拒绝的错误
我正在使用Firebase进行项目,我希望在其中存储有关工作的基本信息。我创建了作业对象,并按照我认为是将其存储到数据库中的正确步骤进行操作,但是我不断收到错误消息(特别是最后一行):
D/FA: Connected to remote service
V/FA: Processing queued up service tasks: 4
I/AssistStructure: Flattened final assist data: 4736 bytes,containing 1 windows,25 views
V/FA: Inactivity,disconnecting from the service
D/CompatibilityChangeReporter: Compat change id reported: 147798919; UID 10151; state: DISABLED
W/RepoOperation: setValue at /Job/-MEVMjcPp1ryvkEUQ4Fx failed: DatabaseError: Permission denied
我试图写入数据库的Java文件(AddFragment.java):
package com.example.android.portfolio;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.example.android.portfolio.helpers.Job;
import com.example.android.portfolio.helpers.Validation;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
public class AddFragment extends Fragment {
//Database Reference
DatabaseReference ref;
//Create validation object
Validation validation = new Validation();
//Create Job object to pass into database
Job job;
//Component object creation
EditText editTextCompanyName;
EditText editTextJobName;
EditText editTextWebsite;
EditText editTextContactName;
EditText editTextContactEmail;
EditText editTextApplicationLink;
Spinner dropdown;
Button buttonAdd;
String[] items = new String[]{"One Week","Two Weeks","One Month","Never"};
String companyName,jobName,website,contactName,contactEmail,applicationLink;
int dropdownChoice;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_add,container,false);
editTextCompanyName = (EditText) view.findViewById(R.id.editTextCompanyName);
editTextJobName = (EditText) view.findViewById(R.id.editTextJobName);
editTextWebsite = (EditText) view.findViewById(R.id.editTextWebsite);
editTextContactName = (EditText) view.findViewById(R.id.editTextContactName);
editTextContactEmail = (EditText) view.findViewById(R.id.editTextContactEmail);
editTextApplicationLink = (EditText) view.findViewById(R.id.editTextApplicationLink);
dropdown = (Spinner) view.findViewById(R.id.spinnerRemind);
buttonAdd = (Button) view.findViewById(R.id.buttonAdd);
//Create the spinner and set values to it using the above array. Warnings here are for possible null values
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.getActivity(),android.R.layout.simple_spinner_dropdown_item,items);
dropdown.setAdapter(adapter);
ref = FirebaseDatabase.getInstance().getReference().child("Job");
buttonAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Get data from GUI objects and put it into variables
companyName = editTextCompanyName.getText().toString().trim();
jobName = editTextJobName.getText().toString().trim();
website = editTextWebsite.getText().toString().trim();
contactName = editTextContactName.getText().toString().trim();
contactEmail = editTextContactEmail.getText().toString().trim();
applicationLink = editTextApplicationLink.getText().toString().trim();
dropdownChoice = dropdown.getSelectedItemPosition();
//Job object initialization
job = new Job(companyName,applicationLink,dropdownChoice);
//Push values to database
ref.push().setValue(job);
Toast.makeText(AddFragment.this.getActivity(),"Data inserted to database",Toast.LENGTH_LONG);
}
});
return view;
}
}
到目前为止,我已经尝试过:
- 将规则配置从true更改为“ auth!= null”,“ auth == null”
- 向数据库推送添加子值。
- 使用其他模拟器。
这是我第一次使用Firebase,因此我试图了解使用NoSQL数据库的情况,但是由于我的规则文件,我不明白我缺少连接过程的哪一部分,因此不应拒绝任何访问以进行写入
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。