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

+1

'新しいFirebase(FIREBASE_URLは)'レガシーFirebase SDKのためです。 'FirebaseDatabase.getInstance()。getReference()'を使うべきです。 [アップグレードガイド](https://firebase.google.com/support/guides/firebase-android#get_a_database_reference_numbered)を参照してください。 –

+0

ルールはhttps://console.firebase.google.com/u/0/project/_/database/rulesにアクセスして編集できます –

答えて

関連する問題