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.

fire1

2- Depois de logar no Firebase crie um Database firebase.google.com/products/database/

fire2

fire3
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.

fire4

4- Conecte-se ao Firebase selecionando a Databse criada.

fire5

fire11

5- Adicione a base ao seu projeto de app.

fire12

 

5.1 – Adicione a base RealTimeDatabase

fire6
fire7

6- Na Database criada no Firebase habilite a autenticação por email.

fire9

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

fire15
fire14
fire13

Deixe uma resposta

Specify Google Client ID and Secret in Super Socializer > Social Login section in admin panel for Google Login to work

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *