1
アンドロイドからFirebaseに書き込もうとしています。私は認証されたユーザーがデータベースに書き込むことができるようにしたい。これはどうすればいいですか?ここで認証されたユーザのみでFirebaseデータベースに書き込む
は、データベースへの書き込みをしようと私の登録断片である:
public class register_fragment extends Fragment {
public static final String FIREBASE_URL = "my_apps_url";
private FirebaseAuth mAuth;
private Firebase mRootRef;
public String studentIdString, emailString, passwordString;
Snackbar mSnackbar;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.register_layout, container, false);
Button mRegister = (Button) view.findViewById(R.id.green_register_button);
final EditText mStudentId = (EditText) view.findViewById(R.id.student_id);
final EditText mEmail = (EditText) view.findViewById(R.id.register_email);
final EditText mPassword = (EditText) view.findViewById(R.id.register_password);
mAuth = FirebaseAuth.getInstance();
mRootRef = new Firebase(FIREBASE_URL);
mRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
studentIdString = mStudentId.getText().toString();
emailString = mEmail.getText().toString();
passwordString = mPassword.getText().toString();
registerUser(studentIdString,emailString,passwordString);
}
});
return view;
}
@Override
public void onStart(){
super.onStart();
//Check if user is logged in
FirebaseUser currentUser = mAuth.getCurrentUser();
}
private void registerUser(String id, String email, String password){
mAuth.createUserWithEmailAndPassword(email,password)
.addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(!task.isSuccessful()){
mSnackbar = Snackbar.make(getView(),"Error: "+task.getException(),Snackbar.LENGTH_SHORT);
mSnackbar.show();
}else{
mSnackbar = Snackbar.make(getView(),"Successfully Registered",Snackbar.LENGTH_SHORT);
mSnackbar.show();
registerUser(studentIdString,emailString);//call method to write to Firebase
Intent intent = new Intent(getActivity(), ChapelInProgressActivity.class);
intent.putExtra("user",user.getEmail());
startActivity(intent);
}
}
});
}
private void registerUser(String id, String email){
Map<String, Object> updates = new HashMap<>();
updates.put("id",id);
updates.put("email",email);
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
mRootRef.child(user.getUid()).updateChildren(updates);//trying to write to Firebase, but does not work
}
}
私がすべきFirebaseデータベースのためのルールをしたいと思います:
".read": "auth != null",
".write": "auth != null"
ので、認証されたユーザーのみが読むことができるとwrite
'新しいFirebase(FIREBASE_URLは)'レガシーFirebase SDKのためです。 'FirebaseDatabase.getInstance()。getReference()'を使うべきです。 [アップグレードガイド](https://firebase.google.com/support/guides/firebase-android#get_a_database_reference_numbered)を参照してください。 –
ルールはhttps://console.firebase.google.com/u/0/project/_/database/rulesにアクセスして編集できます –