É possível integrar o Firebase Authentication a um sistema de autenticação personalizado modificando o servidor de autenticação para produzir tokens assinados personalizados quando um usuário faz login. Seu app recebe e usa esse token para se autenticar com o Firebase.
Antes de começar
- Adicione o Firebase ao seu projeto para Android, caso ainda não tenha feito isso.
-
No arquivo Gradle do módulo (nível do app)
(geralmente
<project>/<app-module>/build.gradle.ktsou<project>/<app-module>/build.gradle), adicione a dependência da biblioteca do Firebase Authentication para Android. Recomendamos o uso do Firebase Android BoM para lidar com o controle de versões da biblioteca.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:34.4.0")) // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth") }
Com o Firebase Android BoM, seu app sempre vai usar versões compatíveis das bibliotecas do Firebase para Android.
(Alternativa) Adicionar dependências das bibliotecas do Firebase sem usar o BoM
Se você preferir não usar o Firebase BoM, especifique cada versão das bibliotecas do Firebase na linha de dependência correspondente.
Se você usa várias bibliotecas do Firebase no app, recomendamos utilizar o BoM para gerenciar as versões delas, porque isso ajuda a garantir a compatibilidade de todas as bibliotecas.
dependencies { // Add the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth:24.0.1") }
- Para consultar as chaves de servidor do seu projeto, siga estas etapas:
- Acesse a página Contas de serviço nas configurações do seu projeto.
- Clique em Gerar uma nova chave privada na parte inferior da seção SDK Admin do Firebase da página Contas de serviço.
- O novo par de chaves pública/privada da conta de serviço é salvo automaticamente no seu computador. Copie esse arquivo para seu servidor de autenticação.
Autenticar no Firebase
- No método
onCreateda atividade de login, acesse a instância compartilhada do objetoFirebaseAuth:Kotlin
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- Ao inicializar sua atividade, verifique se o usuário está conectado no momento:
Kotlin
public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser updateUI(currentUser) }
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); updateUI(currentUser); }
- Quando os usuários fizerem login no seu app, envie as credenciais de login (por exemplo, nome de usuário e senha) para seu servidor de autenticação. O servidor verifica as credenciais e retorna um token personalizado se elas forem válidas.
- Depois de receber o token personalizado do servidor de autenticação, transmita-o
para
signInWithCustomTokene faça o login do usuário.Se o login for bem-sucedido, oKotlin
customToken?.let { auth.signInWithCustomToken(it) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithCustomToken:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithCustomToken:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } } }
Java
mAuth.signInWithCustomToken(mCustomToken) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithCustomToken:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithCustomToken:failure", task.getException()); Toast.makeText(CustomAuthActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
AuthStateListenerpode usar o métodogetCurrentUserpara receber os dados da conta do usuário.
Próximas etapas
Depois que um usuário faz login pela primeira vez, uma nova conta de usuário é criada e vinculada às credenciais, que podem ser o número do telefone, o nome de usuário e a senha ou as informações do provedor de autenticação. Essa nova conta é armazenada como parte do projeto do Firebase e pode ser usada para identificar um usuário em todos os apps do projeto, seja qual for o método de login utilizado.
-
Você pode receber as informações básicas de perfil do usuário do objeto
FirebaseUsernos seus aplicativos. Consulte Gerenciar usuários. Nas Regras de segurança Firebase Realtime Database e Cloud Storage, você pode acessar o ID exclusivo do usuário conectado pela variável
authe usar essas informações para controlar quais dados um usuário pode acessar.
Os usuários podem fazer login no app usando vários provedores de autenticação. Basta vincular as credenciais desses provedores a uma conta de usuário.
Para desconectar um usuário, chame
signOut:
Kotlin
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();