Nesse tutorial vou descrever como fazer Cadastro de usuário no firebase e database em Java usando assim o serviço Realtime Database para gravar o nome.
Para saber melhor oque é o firebase acesse o link.
Primeiramente vou partir do ponto em que você já tenha integrado o seu aplicativo a sua conta no firebase, caso ainda não tenha integrado veja o turotial a seguir.
Como adicionar o aplicativo ao Firebase
Vamos adicionar ao gradle as bibliotecas do Realtime Database, auth do firebase e Material Design então sincronizar para adicionar as funções delas ao nosso projeto.
Para isso vamos adicionar as seguintes linhas ao arquivo gradle/app.
dependencies {
...
implementation 'com.google.android.material:material:1.1.0-alpha09'
implementation 'com.google.firebase:firebase-analytics:17.2.2'
implementation 'com.google.firebase:firebase-auth:19.2.0'
implementation 'com.google.firebase:firebase-database:19.2.0'
}
Após ter incluído as linhas vamos sincronizar o gradle para poder utilizar as funções das seguintes bibliotecas.
Dentro do site do firebase, vamos acessar a parte de Authentication para assim fazer algumas alterações.
Na parte de “Authentication->Método de login” vamos deixar como na imagem a seguir para que funcione o nosso cadastro.
Agora já temos nosso método de login configurado então vamos para o próximo passo.
Ainda dentro do site do firebase vamos ir na parte de Database para criar a nossa base de dados.
Então vamos até a parte do Realtime Database e criar o banco de dados como na imagem a seguir.
E vamos inserir as seguintes regras no banco de dados para que apenas os próprios usuários possam gravar em em seus registros.
Logo após de ter criado a autenticação e o banco de dados dentro do site do firebase vamos voltar ao nosso projeto e começar a programar.
Vamos inserir no nosso arquivo de strings as seguintes strings.
<resources>
<string name="app_name">Cadastro Firebase</string>
<string name="cadastrar">Cadastar novo usuário</string>
<string name="entrar">Entar com cadastro existente</string>
<string name="cad_cadastrar">Cadastrar</string>
<string name="cad_cancel">Cancelar</string>
<string name="cad_entar">Entrar</string>
<string name="nome">Nome:</string>
<string name="email">E-Mail:</string>
<string name="senha">Senha:</string>
<string name="confsenha">Confirmar Senha:</string>
<string name="modificar">Modificar</string>
</resources>
Logo após ter inserido as strings que vamos utilizar vamos inserir as cores no nosso projeto.
Vamos deixar assim no nosso arquivo de colors as seguintes cores.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#008577</color>
<color name="colorPrimaryDark">#00574B</color>
<color name="colorAccent">#D81B60</color>
<color name="black">#000000</color>
<color name="blue">#0000A3</color>
<color name="white">#FFFFFF</color>
</resources>
Com as strings e cores setadas vamos criar então um ícone para nosso aplicativo com o nome de ic_logo.
Para isso vamos adicionar um Vector Asset no diretório drawable que seja de sua preferência assim como na imagem a seguir.
Siga os passos utilizando o nome do ícone como ic_logo.
Vamos então criar uma class chamada User para que seja o nosso modelo, ela vai guardar apenas o nome e o email.
Então o código dela deve ficar como o seguinte.
package br.com.uware.cadastrofirebase;
import com.google.firebase.database.IgnoreExtraProperties;
@IgnoreExtraProperties
public class User {
public String username;
public String email;
public User() {
// Default constructor required for calls to DataSnapshot.getValue(User.class)
}
public User(String username, String email) {
this.username = username;
this.email = email;
}
}
Então depois de ter criado a base do nosso projeto vamos criar três activities vazias (Empty Activity) para fazer o nosso sistema de login.
As activities vão ser assim:
Vamos agora então montar nossas activities com os seguintes códigos.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="100dp"
android:src="@drawable/ic_logo"/>
<Button
android:id="@+id/btnCadastrar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:backgroundTint="@color/blue"
android:text="@string/cadastrar"/>
<Button
android:id="@+id/btnEntrar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/blue"
android:text="@string/entrar"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
package br.com.uware.cadastrofirebase;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnCadastrar = findViewById(R.id.btnCadastrar);
Button btnEntrar = findViewById(R.id.btnEntrar);
btnCadastrar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
cadastrar();
}
});
btnEntrar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
entrar();
}
});
}
private void cadastrar(){
Intent intent = new Intent(this, CadastrarActivity.class);
startActivity(intent);
}
private void entrar(){
Intent intent = new Intent(this,EntrarActivity.class);
startActivity(intent);
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".CadastrarActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="100dp"
android:src="@drawable/ic_logo"/>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/nome"
app:hintTextColor="@color/blue">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edNome"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/email"
app:hintTextColor="@color/blue">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/senha"
app:hintTextColor="@color/blue">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edSenha1"
android:inputType="textPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/confsenha"
app:hintTextColor="@color/blue">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edConfSenha"
android:inputType="textPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/btnCadastrar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="@color/blue"
android:textColor="@color/white"
android:text="@string/cad_cadastrar"/>
<Button
android:id="@+id/btnCancel1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/cad_cancel"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
package br.com.uware.cadastrofirebase;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
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.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
public class CadastrarActivity extends AppCompatActivity {
private FirebaseAuth mAuth;
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("users");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cadastrar);
mAuth = FirebaseAuth.getInstance();
Button cadastrar = findViewById(R.id.btnCadastrar1);
Button cancelar = findViewById(R.id.btnCancel1);
final EditText nome = findViewById(R.id.edNome);
final EditText email = findViewById(R.id.edEmail);
final EditText senha = findViewById(R.id.edSenha1);
final EditText confSenha = findViewById(R.id.edConfSenha);
cadastrar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (email.getText().toString() != "") {
Log.d("Btn: ", "email");
if (senha.getText().toString().equals(confSenha.getText().toString())) {
if (senha.getText().length() > 5) {
Log.d("Btn: ", "senha");
criaUser(email.getText().toString(), senha.getText().toString(), nome.getText().toString());
} else {
Toast.makeText(CadastrarActivity.this, "Senha com minimo de 6 caracteres", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(CadastrarActivity.this, "Senhas não conferem.", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(CadastrarActivity.this, "E-Mail vazio", Toast.LENGTH_SHORT).show();
}
}
});
cancelar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
nome.setText("");
email.setText("");
senha.setText("");
confSenha.setText("");
getCurrentFocus().clearFocus();
}
});
}
private void criaUser(final String email, String password, final String nome) {
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
Log.d("Login: ", "createUserWithEmail:success");
FirebaseUser userId = mAuth.getCurrentUser();
User user = new User(nome, email);
gravaNome(userId.getUid(), user);
entrada();
} else {
// If sign in fails, display a message to the user.
Log.w("Login: ", "createUserWithEmail:failure", task.getException());
Toast.makeText(CadastrarActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
}
});
}
private void gravaNome(String userId, User user){
myRef.child(userId).setValue(user);
}
private void entrada() {
Intent intent = new Intent(this, DentroActivity.class);
startActivity(intent);
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".EntrarActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="100dp"
android:src="@drawable/ic_logo"/>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/email"
app:hintTextColor="@color/blue">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edEntEmail"
android:inputType="textEmailAddress"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/senha"
app:hintTextColor="@color/blue">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edEntSenha"
android:inputType="textPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/btnEntEntrar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="@color/blue"
android:textColor="@color/white"
android:text="@string/cad_entar"/>
<Button
android:id="@+id/btnEntCancel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/cad_cancel"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
package br.com.uware.cadastrofirebase;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
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.FirebaseUser;
public class EntrarActivity extends AppCompatActivity {
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_entrar);
mAuth = FirebaseAuth.getInstance();
Button btnEntrar = findViewById(R.id.btnEntEntrar);
Button btnCancel = findViewById(R.id.btnEntCancel);
final EditText edEmail = findViewById(R.id.edEntEmail);
final EditText edSenha = findViewById(R.id.edEntSenha);
btnEntrar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
entrar(edEmail.getText().toString(),edSenha.getText().toString());
}
});
btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
edEmail.setText("");
edSenha.setText("");
getCurrentFocus().clearFocus();
}
});
}
private void entrar(String email, String password){
mAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
Log.d("Entrar: ", "signInWithEmail:success");
FirebaseUser user = mAuth.getCurrentUser();
entrada();
} else {
// If sign in fails, display a message to the user.
Log.w("Entrar: ", "signInWithEmail:failure", task.getException());
Toast.makeText(EntrarActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
// ...
}
});
}
private void entrada(){
Intent intent = new Intent(this,DentroActivity.class);
startActivity(intent);
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".DentroActivity">
<ImageView
android:id="@+id/ivLogo"
android:layout_width="match_parent"
android:layout_height="100dp"
android:src="@drawable/ic_logo"
app:layout_constraintTop_toTopOf="parent"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@id/ivLogo"
app:layout_constraintBottom_toBottomOf="parent">
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/nome">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/etDentroNome"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/email">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/etDentroEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/btnMudar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/modificar"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
package br.com.uware.cadastrofirebase;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
public class DentroActivity extends AppCompatActivity {
private FirebaseAuth mAuth;
FirebaseUser currentUser;
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("users");
EditText etNome;
EditText etEmail;
Button btnMudar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dentro);
etNome = findViewById(R.id.etDentroNome);
etEmail = findViewById(R.id.etDentroEmail);
mAuth = FirebaseAuth.getInstance();
btnMudar = findViewById(R.id.btnMudar);
btnMudar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
User user = new User(etNome.getText().toString(), etEmail.getText().toString());
writeDB(user);
}
});
}
@Override
public void onStart() {
super.onStart();
currentUser = mAuth.getCurrentUser();
myRef.addValueEventListener(postListener);
}
private void setaNome(User user){
etNome.setText(user.username);
etEmail.setText(user.email);
}
private void writeDB(User user){
myRef.child(currentUser.getUid()).setValue(user);
}
ValueEventListener postListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
User user;
user = dataSnapshot.child(currentUser.getUid()).getValue(User.class);
setaNome(user);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
}
Enfim espero poder ter ajudado com mais este tutorial sobre Cadastro de usuário no firebase e database em Java.
Tags:
Firebase Java login Realtime Database TutorialPosts relacionados: