首页 > 解决方案 > 使用 Firebase 在数据库中保存数据的问题

问题描述

这里的新手问题:我无法在 firebase App 上保存数据。为什么?我正在使用 Base64Custom 对用户的电子邮件进行编码,但没有保存。我之前已经这样做了,但现在它正在工作。

  1. package com.example.eefad.aplicaoteste.activity.Activity;
    
    import android.content.Intent;
    import android.support.annotation.NonNull;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Base64;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    
    import com.example.eefad.aplicaoteste.R;
    import com.example.eefad.aplicaoteste.activity.Config.ConfiguracaoFirebase;
    import com.example.eefad.aplicaoteste.activity.helper.Base64Custom;
    import com.example.eefad.aplicaoteste.activity.model.Usuario;
    import com.google.android.gms.tasks.OnCompleteListener;
    import com.google.android.gms.tasks.Task;
    import com.google.firebase.auth.AuthResult;
    import com.google.firebase.auth.FirebaseAuth;
    import com.google.firebase.auth.FirebaseAuthInvalidCredentialsException;
    import com.google.firebase.auth.FirebaseAuthUserCollisionException;
    import com.google.firebase.auth.FirebaseAuthWeakPasswordException;
    
    ;
    
    
    public class MainActivity extends AppCompatActivity {
    
        private EditText campoNome, campoEmail, campoSenha;
        private Button botaoCadastrar;
        private Usuario usuario;
        private FirebaseAuth autenticacao;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            campoNome = findViewById(R.id.editNome);
            campoEmail = findViewById(R.id.editEmail);
            campoSenha = findViewById(R.id.editSenha);
            botaoCadastrar = findViewById(R.id.buttonCadastrar);
    
            botaoCadastrar.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
    
                    String textoNome = campoNome.getText().toString();
                    String textoEmail = campoEmail.getText().toString();
                    String textoSenha = campoSenha.getText().toString();
    
                    //Validação do preenchimento dos campos.
    
                    if(!textoNome.isEmpty() ) {
                        if(!textoEmail.isEmpty()){
                            if(!textoSenha.isEmpty()){
                                usuario = new Usuario();
                                usuario.setNome(textoNome);
                                usuario.setEmail(textoEmail);
                                usuario.setSenha(textoSenha);
                                cadastrarUsuario();
    
    
    
                            }
                        }
                    }
    
    
                }
            });
    
    
    }
        public void cadastrarUsuario(){
            autenticacao = ConfiguracaoFirebase.getFirebaseAutenticacao();
            autenticacao.createUserWithEmailAndPassword(usuario.getEmail(), usuario.getSenha())
                    .addOnCompleteListener(this, new OnCompleteListener <AuthResult>() {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
    
                            if(task.isSuccessful() ){
    
                             // String idUsuario = Base64Custom.codificarBase64(usuario.getEmail());
                                String idUsuario = usuario.getEmail();
                              usuario.setIdUsuario(idUsuario);
                              usuario.salvar();
                               verificaUsuarioLogado();
    
                                    Toast.makeText(MainActivity.this, "Usuário Salvo com Sucesso", Toast.LENGTH_SHORT).show();
                                finish();
    
    
                            }else {
    
                                String excecao = "";
                                try {
                                    throw task.getException();
                                }catch ( FirebaseAuthWeakPasswordException e){
                                    excecao = "Digite uma senha mais forte!";
                                }catch ( FirebaseAuthInvalidCredentialsException e){
                                    excecao= "Por favor, digite um e-mail válido";
                                }catch ( FirebaseAuthUserCollisionException e){
                                    excecao = "Este conta já foi cadastrada";
                                }catch (Exception e){
                                    excecao = "Erro ao cadastrar usuário: "  + e.getMessage();
                                    e.printStackTrace();
                                }
    
                                Toast.makeText(MainActivity.this, excecao, Toast.LENGTH_SHORT).show();
    
                            }
    
                        }
                    });
    
    
    
        }
    
    
       public void verificaUsuarioLogado(){
            autenticacao =  ConfiguracaoFirebase.getFirebaseAutenticacao();
            if(autenticacao.getCurrentUser() !=null ) {
                startActivity(new Intent(this, TelaCadastro.class));
            }
    
       }
    
    
    }

我正在使用 Getters 和 setter 来返回数据,并且我创建了一个方法调用 salvar 来保存在数据库上。

package com.example.eefad.aplicaoteste.activity.model;

import com.example.eefad.aplicaoteste.activity.Config.ConfiguracaoFirebase;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.Exclude;

public class Usuario {

    private String idUsuario;
    private String nome;
    private String email;
    private String senha;

    public Usuario() {

    }

    public void salvar(){
        DatabaseReference firebase = ConfiguracaoFirebase.getFirebaseDatabase();
        firebase.child("usuarios")
                .child(this.idUsuario)
                .setValue(this);



    }

    @Exclude
    public String getIdUsuario() {
        return idUsuario;
    }

    public void setIdUsuario(String idUsuario) {
        this.idUsuario = idUsuario;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Exclude
    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }
}

我不知道我做错了什么。我一直在尝试保存电子邮件,但使用该结构似乎是不可能的。

标签: javaandroidfirebasefirebase-realtime-database

解决方案


推荐阅读