Android Firebase – Login

Android Firebase
Nessa lição vamos aprender como utilizar a base de dados do Firebase para fazer uma tela de autenticação de login.
1- Você deverá criar uma conta de usuário no firebase firebase.google.com para seu app.
2- Depois de logar no Firebase crie um Database firebase.google.com/products/database/
3- Vá para o projeto novo criado e vamos sincronizar o projeto com o Firebase. Para isso vamos utilizar o assistente do Android Studio selecionando a opção Authentication.
4- Conecte-se ao Firebase selecionando a Databse criada.
5- Adicione a base ao seu projeto de app.
5.1 – Adicione a base RealTimeDatabase
6- Na Database criada no Firebase habilite a autenticação por email.
7- No projeto do Android Studio ExemploFirebase crie uma Activity chamada LoginActivity
8- Adicione o seguinte layout à Activity
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_table_form_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:shrinkColumns="2" android:stretchColumns="2" tools:context="com.example.tux.exemplofirebase.LoginActivity"> <TableRow android:layout_height="wrap_content" android:layout_width="match_parent"> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Nome:"/> <EditText android:id="@+id/edtNome" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:hint="Informe Nome" > <requestFocus /> </EditText> </TableRow> <TableRow android:layout_height="wrap_content" android:layout_width="match_parent"> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Email:" /> <EditText android:id="@+id/edtEmail" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:hint="Informe Email" android:inputType="textEmailAddress" /> </TableRow> <TableRow android:layout_height="wrap_content" android:layout_width="match_parent"> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Senha:" /> <EditText android:id="@+id/edtSenha" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:inputType="textPassword" android:hint="Informe Senha" /> </TableRow> <TableRow android:layout_height="wrap_content" android:layout_width="match_parent"> <Button android:id="@+id/btnLogin" android:layout_span="2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Login" android:layout_weight="1" android:onClick="clickLogin"/> </TableRow> <TableRow android:layout_height="wrap_content" android:layout_width="match_parent"> <Button android:id="@+id/btnNovoUsuario" android:layout_span="2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Novo Usuário" android:layout_weight="1" android:onClick="criarLogin"/> </TableRow> </TableLayout>
9- Na classe LofginActivity.java adicione o seguinte código. A classe FirebaseAuth é utilizada para fazer a autenticação no Firebase e a classe FirebaseAuth.AuthStateListener serve para monitorar (escutar) os usuários que estão autenticados.
No método onCreate implemente o onAuthStateChanged que irá verificar existe usuário autentucado. Em caso positivo redireciona para outra página (crie nova Activity chamada MainActivity) em caso negativo exibe mensagem.
O método clickLogin passa os dado de email e senha para que sejam autenticados no Firebase. Em caso positivo exibe a mensagem “Bem vindo!”.
O método criarLogin cria um novo login na Database do projeto no Firebase, para isso o usuário deverá informar o nome, email e senha. Porém somente o email e senha serão utilizados para criar um usuário. Caso a criação do usuário ocorra sem erros será criada na referência “users” da sua Database um novo usuário com os campos nome, email e uid (gerado durante a criação do usuário). Essas informações poderão ser utilizadas durante seu projeto.
package com.example.tux.exemplofirebase; import android.content.Intent; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; 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 LoginActivity extends AppCompatActivity { private FirebaseAuth mAuth; private FirebaseAuth.AuthStateListener mAuthListener; private EditText edtNome, edtEmail, edtSenha; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); mAuth = FirebaseAuth.getInstance(); edtNome = (EditText) findViewById(R.id.edtNome); edtSenha = (EditText) findViewById(R.id.edtSenha); edtEmail = (EditText) findViewById(R.id.edtEmail); mAuthListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { FirebaseUser user = firebaseAuth.getCurrentUser(); if (user != null) { Toast.makeText(getApplicationContext(), "Bem Vindo " + user.getDisplayName() + "!", Toast.LENGTH_SHORT).show(); Intent it = new Intent(getApplicationContext(), MainActivity.class); startActivity(it); } else { Toast.makeText(getApplicationContext(), "Sem Usuários Conectados!", Toast.LENGTH_SHORT).show(); } } }; } public void clickLogin(View view){ mAuth.createUserWithEmailAndPassword(edtEmail.getText().toString(), edtSenha.getText().toString()) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (!task.isSuccessful()) { Toast.makeText(LoginActivity.this, "Erro ao tentar logar!", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(LoginActivity.this, "Bem Vindo!", Toast.LENGTH_SHORT).show(); } } }); } public void criarLogin(View view){ mAuth.createUserWithEmailAndPassword(edtEmail.getText().toString(), edtSenha.getText().toString()) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (!task.isSuccessful()) { Toast.makeText(LoginActivity.this, "Erro ao criar usuário!", Toast.LENGTH_SHORT).show(); }else{ FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference myRef = database.getReference("users").child(FirebaseAuth.getInstance().getCurrentUser().getUid()); myRef.child("nome").setValue(edtNome.getText().toString()); myRef.child("email").setValue(edtEmail.getText().toString()); myRef.child("uid").setValue(FirebaseAuth.getInstance().getCurrentUser().getUid()); } } }); } @Override public void onStart() { super.onStart(); mAuth.addAuthStateListener(mAuthListener); } @Override public void onStop() { super.onStop(); if (mAuthListener != null) { mAuth.removeAuthStateListener(mAuthListener); } } }
10 – Compile e teste
- Android Banco de Dados (Firebase)
- Android ListActivity – (Parte 3 – Custom ListView)
- Android – Location Update
- Android – RecyclerView
- Android ListActivity – (Parte 1 – ListActivity)