Use o Firebase Authentication para criar e usar contas anônimas temporárias e fazer a autenticação no Firebase. Com essas contas, os usuários que ainda não se registraram no seu app podem trabalhar com os dados protegidos pelas regras de segurança. Se um usuário anônimo se registrar no seu app, vincule as credenciais de login à conta anônima para que ele continue trabalhando com os dados protegidos nas sessões futuras.
Antes de começar
- Adicione o Firebase ao seu projeto para Android, caso ainda não tenha feito isso.
-
Usando a BoM do Firebase para Android,
declare a dependência da biblioteca Android do Firebase Authentication no seu arquivo do Gradle (nível do app) do módulo,
que geralmente é
app/build.gradle
.Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:29.3.1') // Declare 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 a BoM do Firebase para Android, seu app sempre usará versões compatíveis das bibliotecas do Firebase para Android.
(Alternativa) Declare as dependências das bibliotecas do Firebase sem usar a BoM.
Se você preferir não usar a BoM do Firebase, especifique cada versão das bibliotecas do Firebase na linha de dependência correspondente.
Caso você use várias bibliotecas do Firebase no seu app, recomendamos usar a BoM para gerenciar as versões dessas bibliotecas para garantir a compatibilidade de todas elas.
dependencies { // Declare 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:21.0.3' }
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:29.3.1') // Declare 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-ktx' }
Ao usar a BoM do Firebase para Android, seu app sempre usará versões compatíveis das bibliotecas do Firebase para Android.
(Alternativa) Declare as dependências das bibliotecas do Firebase sem usar a BoM.
Se você preferir não usar a BoM do Firebase, especifique cada versão das bibliotecas do Firebase na linha de dependência correspondente.
Caso você use várias bibliotecas do Firebase no seu app, recomendamos usar a BoM para gerenciar as versões dessas bibliotecas para garantir a compatibilidade de todas elas.
dependencies { // Declare 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-ktx:21.0.3' }
- Caso você ainda não tenha vinculado o app ao projeto do Firebase, faça isso no Console do Firebase.
- Ative a autenticação anônima:
- No Console do Firebase, abra a seção Auth.
- Na página Métodos de login, ative o método de login Anônimo.
Fazer a autenticação anônima no Firebase
Quando um usuário não conectado acessar um recurso do app que exige autenticação no Firebase, faça login dele anonimamente executando as seguintes etapas:
- No método
onCreate
da atividade de login, acesse a instância compartilhada do objetoFirebaseAuth
:Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
Kotlin+KTX
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
- Ao inicializar sua atividade, verifique se o usuário está conectado no momento:
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); }
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) }
- Por fim, chame
signInAnonymously
para fazer login como usuário anônimo: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); } } });
Kotlin+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) } }
getCurrentUser
para coletar os dados da conta do usuário.
Converter uma conta anônima em permanente
Quando um usuário anônimo se registra no seu app, ele pode continuar trabalhando com a nova conta. Por exemplo, você pode deixar no carrinho de compras dessa conta os itens adicionados antes do registro. Para isso, execute as seguintes etapas:
- Quando o usuário se inscrever, conclua o fluxo de login do provedor de autenticação
até a chamada de um dos métodos
FirebaseAuth.signInWith
, mas sem incluir essa etapa. Por exemplo, consiga o token do ID do Google, o token de acesso do Facebook ou o endereço de e-mail e a senha do usuário. Consiga um
AuthCredential
para o novo provedor de autenticação:Login do Google
Java
AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
Kotlin+KTX
val credential = GoogleAuthProvider.getCredential(googleIdToken, null)
Login do Facebook
Java
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
Kotlin+KTX
val credential = FacebookAuthProvider.getCredential(token.token)
Login com e-mail/senha
Java
AuthCredential credential = EmailAuthProvider.getCredential(email, password);
Kotlin+KTX
val credential = EmailAuthProvider.getCredential(email, password)
Passe o objeto
AuthCredential
para o métodolinkWithCredential
do usuário que fez login: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); } } });
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) } }
Se a chamada para linkWithCredential
for concluída, a nova conta do usuário terá acesso aos dados do Firebase da conta anônima.
Próximas etapas
Agora que os usuários podem se autenticar com o Firebase, use as regras do Firebase para controlar os acessos ao banco de dados.