Você pode usar o Firebase Authentication para criar e usar contas anônimas temporárias para autenticação no Firebase. Essas contas anônimas temporárias podem ser usadas para permitir que usuários que ainda não se inscreveram no seu aplicativo trabalhem com dados protegidos por regras de segurança. Se um usuário anônimo decidir se inscrever no seu aplicativo, você poderá vincular suas credenciais de login à conta anônima para que ele possa continuar trabalhando com seus dados protegidos em sessões futuras.
Antes de você começar
- Adicione o Firebase ao seu projeto Android , caso ainda não o tenha feito.
- No arquivo Gradle do módulo (nível do aplicativo) (geralmente
<project>/<app-module>/build.gradle.kts
ou<project>/<app-module>/build.gradle
), adicione a dependência para o Firebase Authentication biblioteca para Android. Recomendamos usar o Firebase Android BoM para controlar o controle de versão da biblioteca.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.8.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") }
Ao usar o Firebase Android BoM , seu aplicativo sempre usará versões compatíveis das bibliotecas do Firebase Android.
Procurando um módulo de biblioteca específico para Kotlin? A partir de outubro de 2023 (Firebase BoM 32.5.0) , tanto os desenvolvedores Kotlin quanto os Java podem depender do módulo da biblioteca principal (para obter detalhes, consulte o FAQ sobre esta iniciativa ).(Alternativa) Adicionar dependências da biblioteca Firebase sem usar o BoM
Se você optar por não usar o Firebase BoM, deverá especificar cada versão da biblioteca do Firebase em sua linha de dependência.
Observe que se você usa várias bibliotecas do Firebase no seu aplicativo, é altamente recomendável usar a BoM para gerenciar as versões da biblioteca, o que garante que todas as versões sejam compatíveis.
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:22.3.1") }
- Se você ainda não conectou seu aplicativo ao projeto do Firebase, faça isso no console do Firebase .
- Habilite autenticação anônima:
- No console do Firebase , abra a seção Auth .
- Na página Métodos de login , habilite o método de login anônimo .
- Opcional : se você tiver atualizado seu projeto para o Firebase Authentication com Identity Platform , poderá ativar a limpeza automática. Ao ativar esta configuração, as contas anônimas com mais de 30 dias serão excluídas automaticamente. Em projetos com limpeza automática habilitada, a autenticação anônima não será mais contabilizada nos limites de uso ou nas cotas de cobrança. Consulte Limpeza automática .
Autenticar com Firebase anonimamente
Quando um usuário desconectado usa um recurso do aplicativo que requer autenticação com o Firebase, faça login do usuário anonimamente seguindo estas etapas:
- No método
onCreate
da sua atividade, obtenha a instância compartilhada do objetoFirebaseAuth
:Kotlin+KTX
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+KTX
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); }
- Por fim, chame
signInAnonymously
para fazer login como usuário anônimo:Se o login for bem-sucedido, você poderá usar o métodoKotlin+KTX
auth.signInAnonymously() .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInAnonymously:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInAnonymously:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.signInAnonymously() .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, "signInAnonymously:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInAnonymously:failure", task.getException()); Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
getCurrentUser
para obter os dados da conta do usuário.
Converter uma conta anônima em uma conta permanente
Quando um usuário anônimo se inscreve em seu aplicativo, você pode permitir que ele continue trabalhando com a nova conta. Por exemplo, você pode disponibilizar os itens que o usuário adicionou ao carrinho de compras antes de se inscrever em sua nova conta. carrinho de compras da conta. Para fazer isso, conclua as seguintes etapas:
- Quando o usuário se inscrever, conclua o fluxo de login do provedor de autenticação do usuário até, mas não incluindo, chamar um dos métodos
FirebaseAuth.signInWith
. Por exemplo, obtenha o token de ID do Google, o token de acesso do Facebook ou o endereço de e-mail e a senha do usuário. Obtenha um
AuthCredential
para o novo provedor de autenticação:Login do Google
Kotlin+KTX
val credential = GoogleAuthProvider.getCredential(googleIdToken, null)
Java
AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
Entrar no Facebook
Kotlin+KTX
val credential = FacebookAuthProvider.getCredential(token.token)
Java
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
Login com senha de e-mail
Kotlin+KTX
val credential = EmailAuthProvider.getCredential(email, password)
Java
AuthCredential credential = EmailAuthProvider.getCredential(email, password);
Passe o objeto
AuthCredential
para o métodolinkWithCredential
do usuário de login:Kotlin+KTX
auth.currentUser!!.linkWithCredential(credential) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { Log.d(TAG, "linkWithCredential:success") val user = task.result?.user updateUI(user) } else { Log.w(TAG, "linkWithCredential:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.getCurrentUser().linkWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { Log.d(TAG, "linkWithCredential:success"); FirebaseUser user = task.getResult().getUser(); updateUI(user); } else { Log.w(TAG, "linkWithCredential:failure", task.getException()); Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
Se a chamada para linkWithCredential
for bem-sucedida, a nova conta do usuário poderá acessar os dados do Firebase da conta anônima.
Limpeza automática
Se você tiver atualizado seu projeto para o Firebase Authentication com Identity Platform , poderá ativar a limpeza automática no Firebase console. Ao ativar esse recurso, você permite que o Firebase exclua automaticamente contas anônimas com mais de 30 dias. Em projetos com limpeza automática habilitada, a autenticação anônima não será contabilizada nos limites de uso ou nas cotas de cobrança.
- Quaisquer contas anônimas criadas após a ativação da limpeza automática poderão ser excluídas automaticamente a qualquer momento após 30 dias após a criação.
- As contas anônimas existentes estarão qualificadas para exclusão automática 30 dias após a ativação da limpeza automática.
- Se você desativar a limpeza automática, todas as contas anônimas programadas para exclusão permanecerão programadas para exclusão.
- Se você "atualizar" uma conta anônima vinculando-a a qualquer método de login, a conta não será excluída automaticamente.
Se você quiser ver quantos usuários serão afetados antes de ativar esse recurso e tiver atualizado seu projeto para o Firebase Authentication com Identity Platform , poderá filtrar por is_anon
no Cloud Logging .
Próximos passos
Agora que os usuários podem se autenticar com o Firebase, você pode controlar o acesso deles aos dados no seu banco de dados do Firebase usando regras do Firebase .