Você precisa fazer com que o seu aplicativo se autentique no Firebase utilizando suas credenciais do Google?
É bem simples. Para isso precisamos que tenha um projeto android e o no Firebase criados. Com o projeto android aberto gere a chave SHA1 do seu cliente conforme a imagem abaixo.

Com a chave SHA1 gerada, agora podemos gerar o token OAuth2 de conexão. Para isso basta acessarmos o link abaixo e clicar no botão mostrado na imagem.
Quando terminar de gerar a o Token copie ele e cole uma constante do seu projeto.
Agora que temos tudo configurado, podemos iniciar a configuração do nosso projeto.
Para autenticação no Firebase vamos precisar de duas dependências.
implementation 'com.google.firebase:firebase-auth:19.1.0'
implementation 'com.google.android.gms:play-services-auth:17.0.0'
Com as dependências adicionadas, vamos criar a nossa classe de configuração.
object FirebaseConfiguration {
private var auth: FirebaseAuth? = null
private var googleSignInOptions: GoogleSignInOptions? = null
fun getFirebaseAuth(): FirebaseAuth {
if (auth == null)
auth = FirebaseAuth.getInstance()
return auth!!
}
fun getFirebaseOption(): GoogleSignInOptions {
if (googleSignInOptions == null)
googleSignInOptions = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(GOOGLE_ID)
.requestEmail()
.build()
return googleSignInOptions!!
}
}
Agora podemos fazer com que a nossa aplicação se conect ao Firebase. No código abaixo está o código de um fragment que faz toda a conexão.
class LoginFragment : Fragment() {
companion object{
private const val GOOGLE_LOGIN = 159
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_login, container)
view.findViewById<Button>(R.id.sign_in_button).setOnClickListener {
val gso = FirebaseConfiguration.getFirebaseOption()
val client = GoogleSignIn.getClient(context!!, gso)
val signInIntent = client.signInIntent
startActivityForResult(signInIntent, GOOGLE_LOGIN)
}
return view
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == GOOGLE_LOGIN) {
val task = GoogleSignIn.getSignedInAccountFromIntent(data)
handleSignInResult(task)
}
}
private fun handleSignInResult(completedTask: Task<GoogleSignInAccount>) {
try {
val account = completedTask.getResult(ApiException::class.java)
firebaseAuthWithGoogle(account!!)
} catch (e: ApiException) {
//fail
}
}
private fun firebaseAuthWithGoogle(acct: GoogleSignInAccount) {
val auth = FirebaseConfiguration.getFirebaseAuth()
acct.email?.let { email ->
auth.signInWithCredential(GoogleAuthProvider.getCredential(acct.idToken, null))
.addOnCompleteListener {
if (it.isSuccessful) {
//success
} else {
//fail
}
}
}
}
}
0 comentários