Redes Sociais
 Telegram  YouTube
Como fazer login no firebase em Kotlin
24 de dezembro de 2019

Nesse tutorial vou descrever Como fazer login no firebase em Kotlin com conta do google e facebook assim vai ter registro de usuários em seu aplicativo.

Primeiramente vamos já ter nosso aplicativo integrado com o firebase para poder fazer o login.

Se você não sabe como integrar o seu aplicativo ao firebase veja o tutorial Como adicionar o aplicativo ao Firebase.

Vamos então adicionar o método de login no firebase e para isso você tem que entrar em sua conta e seguir os seguintes passos.

Firebase métodos de login

Entrar na parte de autentication e clicar em configurar métodos de login.

Firebase autentication
Firebase autentication

Google

Logo depois de clicar em configurar métodos de login vamos então setar o método de login do google e ativa lo como na imagem a seguir.

Como fazer login no firebase em Kotlin
Login com google firebase.

Facebook

Agora vamos fazer o login no facebook e para isso você já deve ter feito a inscrição no site Facebook for Developers.

Logo após logar você deve fazer os seguintes passos.





Criar um novo aplicativo.

Criar aplicativo no facebook.
Criar aplicativo no facebook.

Colocar o nome do aplicativo.

Colocar o nome do aplicativo no facebook for developers
Colocar o nome do aplicativo no facebook for developers

Agora vamos configurar o login do facebook para android.

Configurar Login do facebook.
Configurar Login do facebook.




Selecionar android.
Selecionar android.

Clique em avançar no número 1.

Etapa 1 clique em avançar.
Etapa 1 clique em avançar.

Clique em avançar no número 2.

Etapa 2 clique em avançar.
Etapa 2 clique em avançar.

Coloque o nome do seu pacote e a classe que é iniciado seu projeto no número 3.

Coloque o nome do seu pacote e a classe que é iniciado seu projeto.
Coloque o nome do seu pacote e a classe que é iniciado seu projeto.




No número 4 devemos assim abrir o terminal do nosso android studio e digitar a seguinte linha caso você use linux.

[[email protected] ~]$ keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Ele vai gerar um número que você deve colocar como na seguinte imagem.

Como fazer login no firebase em Kotlin
Inserindo hash do aplicativo no facebook for developers.

Clique em avançar no número 5.

Etapa 5 clique em avançar.
Etapa 5 clique em avançar.

Logo depois no número 6 agora devemos adicionar algumas linhas em nosso projeto.

Então vamos abrir nosso arquivo strings e colocar as seguintes linhas com o número que aparece no passo 6.

Obs: As linhas são assim diferentes das que tem na página de developers muda o fb por facebook.

strings.xml

<string name="facebook_application_id">93432432444447</string>
<string name="facebook_login_protocol_scheme">fb413243456749</string>

Adicionar a seguinte linha ao nosso arquivo AndroidManifest.xml.

AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET"/>




Imagem do passo número 6.

Imagem do passo número 6.
Imagem do passo número 6.

Os próximos passos é somente clicar em avançar.

Logo após ter terminado vamos incluir o login com facebook no firebase e para isso vamos precisar copiar para a configuração do facebook login a linha que está no firebase como na imagem seguinte.

Como fazer login no firebase em Kotlin
Linha que deve ser copiada para o facebook login.

No facebook for developers você deve entrar no menu Login do facebook -> Configurações e inserir a linha como na próxima imagem.

Linha que deve ser copiada para o facebook login.
Linha que deve ser copiada para o facebook login.

Agora nós vamos na parte de configurações -> Básico e vamos ver a seguinte imagem, então vamos copiar o ID do aplicativo e Chave secreta do Aplicativo e vamos colar lá na parte da autenticação do facebook no firebase e salvar.

ID do apluicativo e Chave secreta.
ID do apluicativo e Chave secreta.

Depois de ter salvo as alterações no firebase e facebook for developers vamos agora começar a programar para podermos ter nossa tela de login.





Vamos adicionar as bibliotecas necessárias no gradle.

gradle.app

dependencies {
    ...
    //Firebase Auth
    implementation 'com.firebaseui:firebase-ui-auth:5.1.0'
    implementation 'com.facebook.android:facebook-login:4.41.0'
}

Agora vamos criar 2 classes em kotlin para inserir os seguintes valores nos seguintes arquivos, os dois arquivos são BaseActivity e SignInActivity para poder fazer o sistema de login.

BaseActivity

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import com.google.firebase.auth.FirebaseAuth
abstract class BaseActivity : AppCompatActivity() {
    private val fbAuth: FirebaseAuth = FirebaseAuth.getInstance()
    private var hasInitCalled = false
    private var authListener: FirebaseAuth.AuthStateListener =
        FirebaseAuth.AuthStateListener { firebaseAuth ->
            val user = firebaseAuth.currentUser
            if(user != null){
                if(!hasInitCalled){
                    hasInitCalled = true
                    init()
                }
            }
            else {
                finish()
                val intent = Intent(this, SignInActivity::class.java).apply {
                    addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
                    addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
                }
                startActivity(intent)
            }
        }
    public override fun onStart() {
        super.onStart()
        fbAuth.addAuthStateListener(authListener)
    }
    public override fun onStop() {
        super.onStop()
        fbAuth.removeAuthStateListener(authListener)
    }
    protected abstract fun init()
}

SignInActivity

import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.firebase.ui.auth.AuthUI
import com.firebase.ui.auth.IdpResponse
class SignInActivity : AppCompatActivity() {
    val providers = arrayListOf(
        AuthUI.IdpConfig.GoogleBuilder().build(),
        AuthUI.IdpConfig.FacebookBuilder().build()
    )
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        initSignIn()

    }
    private fun initSignIn(){
        startActivityForResult(
            AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .setTosAndPrivacyPolicyUrls(
                    "https://uware.com.br/terms.html",
                    "https://uware.com.br/privacy.html")
                .build(),
            RC_SIGN_IN)
    }
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == RC_SIGN_IN) {
            val response = IdpResponse.fromResultIntent(data)
            if (resultCode == Activity.RESULT_OK) {
                val intent = Intent(this, MainActivity::class.java)
                startActivity(intent)
            } else {
                Toast.makeText(this,"Erro no login.", Toast.LENGTH_SHORT).show()
            }
        }
    }
    companion object{
        const val RC_SIGN_IN = 1
    }
}




Logo após vamos adicionar nossa SignInActivity no AndroidManifest.xml  colocando a seguinte linha.

AndroidManifest.xml

<activity android:name=".SignInActivity"></activity>

Agora chegou a hora de modificar a MainActivity para que ele faça o pedido de SignIn se o usuário não for registrado. Para isso usamos a classe estendida BaseActivity e sobrescrevendo a função init como mostrado no código a seguir.

MainActivity

import android.os.Bundle
class MainActivity : BaseActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
    override fun init() {
    }
}

E também vamos modificar a nossa activity_main para que então mostre que o usuário entrou.

activity_main

<?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">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Entrou"
        android:textSize="50sp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

Então agora vamos compilar e executar o nosso projeto para ver como tudo funciona.

Enfim espero poder ter ajudado com mais esse tutorial sobre Como fazer login no firebase em Kotlin.





Autor: Rodrigo Leutz

Desenvolvedor Web e Android ( Kotlin e Java )


Começando a programar na linguagem Kotlin – Parte 5

Nesse tutorial Começando a programar na linguagem Kotlin – Parte 5 vamos ver strings e intervalos para que assim seja possível entrar em laços.[...]

7 de fevereiro de 2020

Vídeo 11: Pegar endereço com o CEP Kotlin

Nesse Vídeo 11: Pegar endereço com o CEP Kotlin vou descrever como fazer a parte da programação assim você vai imprimir o endereço na tela.[...]

4 de janeiro de 2020

Vídeo 10: Pegar endereço com o CEP Kotlin

Nesse Vídeo 10: Pegar endereço com o CEP Kotlin vou descrever como fazer o layout do aplicativo para assim poder fazer a programação. Vou[...]

4 de janeiro de 2020