简体   繁体   中英

Firebase realtime database not saving class

hi im trying to make a login app where the user is saved to firbase but my user class doesn't get saved on FireBase(neither firestore or realtimedatabase),the authentification infos are saved but the problem is just with the user class,and i made sure that the firebase is connected to the android studio.

public class RegisterActivity extends AppCompatActivity implements View.OnClickListener {
    private EditText TextEmail, TextNom , TextCin , TextNumero , TextAdresse ,TextMotDePasse ;
    private TextView svg , s_inscrire;
    private ProgressBar barreProgression;
    private FirebaseAuth mAuth;


    @SuppressLint("WrongViewCast")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);

        mAuth = FirebaseAuth.getInstance();

       // svg = (TextView) findViewById(R.id.imageView3);
       // svg.setOnClickListener(this);

        s_inscrire = (Button) findViewById(R.id.button4);
        s_inscrire.setOnClickListener(this);

        TextEmail = (EditText) findViewById(R.id.editTextTextEmailAddress);
        TextNom = (EditText) findViewById(R.id.editTextTextNom);
        TextCin = (EditText) findViewById(R.id.editTextTextCin);
        TextNumero = (EditText) findViewById(R.id.editTextTextTel);
        TextAdresse = (EditText) findViewById(R.id.editTextTextAdresse);
        TextMotDePasse = (EditText) findViewById(R.id.editTextTextPassword);
        barreProgression = (ProgressBar) findViewById(R.id.progressBar);

    }

    @Override
    public void onClick(View v) {

        switch (v.getId()) {
            case R.id.imageView3:
               startActivity(new Intent(this,MainActivity.class));
                break;

            case R.id.button4:
                inscrire_Utilisateur();
                break;

        }
    }
    private void inscrire_Utilisateur(){
        String email = TextEmail.getText().toString().trim();
        String nom = TextNom.getText().toString().trim();
        String cin = TextCin.getText().toString().trim();
        String  numero = TextNumero.getText().toString().trim();
        String adresse = TextAdresse.getText().toString().trim();
        String motDePasse = TextMotDePasse.getText().toString().trim();

        if(email.isEmpty()){
            TextEmail.setError("Saisissez votre email!");
            TextEmail.requestFocus();
            return;
        }
        if(!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
            TextEmail.setError("Email invalide!");
            TextEmail.requestFocus();
            return;

        }

        if(nom.isEmpty()){
        TextNom.setError("Saisissez votre nom complet!");
        TextNom.requestFocus();
        return;
        }

        if(cin.isEmpty()){
            TextCin.setError("Saisissez votre CIN!");
            TextCin.requestFocus();
            return;
        }

        if(numero.isEmpty()){
            TextNumero.setError("Saisissez votre numéro!");
            TextNumero.requestFocus();
            return;
        }

        if(adresse.isEmpty()){
            TextAdresse.setError("Saisissez votre Adresse!");
            TextAdresse.requestFocus();
            return;
        }

        if(motDePasse.isEmpty()){
            TextMotDePasse.setError("Saisissez votre mot de passe!");
            TextMotDePasse.requestFocus();
            return;
        }
        if (motDePasse.length() < 6) {
            TextMotDePasse.setError("Votre mot de passe doit être composé d'au moins 6 caractères");
            TextMotDePasse.requestFocus();
            return;
        }

        barreProgression.setVisibility(View.VISIBLE);
        mAuth.createUserWithEmailAndPassword(email, motDePasse)
                .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {


                        if (task.isSuccessful()) {
                            User user = new User(email, nom, cin,numero , adresse, motDePasse);

                            FirebaseDatabase.getInstance().getReference("Users").
                                    child(FirebaseAuth.getInstance().getCurrentUser().getUid())
                                    .setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() {
                                @Override
                                public void onComplete(@NonNull Task<Void> task) {
                                    if(task.isSuccessful()) {
                                        Toast.makeText(RegisterActivity.this, "Vous êtes inscrits maintenant ", Toast.LENGTH_LONG).show();
                                        barreProgression.setVisibility(View.GONE);


                                    } else {
                                        Toast.makeText(RegisterActivity.this, "L'inscription a échoué,veuillez réessayer! ", Toast.LENGTH_LONG).show();
                                        barreProgression.setVisibility(View.GONE);
                                    }
                                }
                            });
                        } else {
                            Toast.makeText(RegisterActivity.this, "L'inscription a échoué,veuillez réessayer! ", Toast.LENGTH_LONG).show();
                            barreProgression.setVisibility(View.GONE);
                        }
                    }
                });

    }
}


  1. Below is the rule for the real-time database that you have to make sure of while making the login app. By default, it is false for both.

    { "rules": { ".read": "auth,=null". ":write", "auth !=null", } }

  2. For storing data in the child of Real-time database, you can also use:

    public DatabaseReference mDatabaseReferences;

and then in your onCreate method, write this:

mFirebaseDatabase = FirebaseDatabase.getInstance();
mDatabaseReferences = mFirebaseDatabase.getReference().child("Users");
  1. Now come to, private void inscrire_Utilisateur() method, inside

    @Override public void onComplete(@NonNull Task task) {

     if (task.isSuccessful()) { User user = new User(email, nom, cin,numero, adresse, motDePasse); mDatabaseReferences.push().setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() { //write the rest of your code here.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM