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.
Entrar na parte de autentication e clicar em configurar métodos de login.
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.
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.
Colocar o nome do aplicativo.
Agora vamos configurar o login do facebook para android.
Clique em avançar no número 1.
Clique em avançar no número 2.
Coloque o nome do seu pacote e a classe que é iniciado seu projeto no número 3.
No número 4 devemos assim abrir o terminal do nosso android studio e digitar a seguinte linha caso você use linux.
Ele vai gerar um número que você deve colocar como na seguinte imagem.
Clique em avançar no número 5.
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.
<string name="facebook_application_id">93432432444447</string>
<string name="facebook_login_protocol_scheme">fb413243456749</string>
Adicionar a seguinte linha ao nosso arquivo AndroidManifest.xml.
<uses-permission android:name="android.permission.INTERNET"/>
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.
No facebook for developers você deve entrar no menu Login do facebook -> Configurações e inserir a linha como na próxima imagem.
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.
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.
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.
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()
}
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.
<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.
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.
<?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.
Nesse tutorial vou demonstrar como usar ViewBinding ao invés de Android Extensions em Kotlin e assim deixar seu aplicativo[...]
6 de dezembro de 2020Nesse 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 2020Nesse 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