Você pode transmitir o estado por meio de um URL de confirmação ao enviar ações de e-mail para redefinição de senha ou verificar o e-mail de um usuário. Isso possibilita ao usuário retornar ao app após a conclusão da ação. Além disso, você pode especificar se é para processar o link de ação do e-mail diretamente de um aplicativo para dispositivos móveis quando ele for instalado, em vez de uma página da Web.
Isso pode ser extremamente útil nas seguintes situações comuns:
Um usuário que não está conectado no momento pode estar tentando acessar conteúdo que exija que o usuário faça login. No entanto, o usuário pode ter esquecido a senha e, por conta disso, acionou o fluxo de redefinição de senha. No final do fluxo, o usuário espera voltar para a seção do app que estava tentando acessar.
Um aplicativo pode oferecer acesso apenas a contas verificadas. Por exemplo, uma newsletter pode exigir que o usuário verifique o e-mail antes de se inscrever. O usuário passa pelo fluxo de verificação de e-mail e espera retornar ao app para concluir a inscrição.
Em outros casos, o usuário pode ter iniciado o fluxo de um dispositivo móvel e espera retornar ao aplicativo para dispositivos móveis, e não ao navegador, após a verificação.
A possibilidade de passar de estado por meio de um URL contínuo é um recurso poderoso que o Firebase Authentication oferece e que pode melhorar significativamente a experiência do usuário.
Como transmitir o estado de um URL de confirmação nas ações de e-mail
Para transmitir um URL de confirmação com segurança, o domínio do URL precisa estar na lista de permissões do console do Firebase. Na seção Autenticação, verifique se esse domínio está na lista de Domínios autorizados da guia Método de login. Se não estiver, adicione-o.
Ao enviar um e-mail de redefinição de senha ou de verificação, é necessário fornecer uma instância de ActionCodeSettings. Ela pode ser criada com a classe ActionCodeSettings.Builder associada, que contém os seguintes métodos:
Método | Descrição |
---|---|
setUrl(String url) |
Define o link (estado/URL de confirmação) que tem diferentes significados em contextos distintos:
|
setIOSBundleId(String iOSBundleId) |
Define o ID do pacote iOS para ajudar a Firebase Authentication a determinar se ela precisa criar um link somente para Web ou um link para dispositivos móveis que seja aberto em um dispositivo Apple. |
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) |
Define o nome do pacote Android para ajudar o Firebase Authentication a determinar se ele precisa criar um link somente para Web ou um link para dispositivos móveis que seja aberto em um dispositivo Android. |
setHandleCodeInApp(boolean status) |
Se o link de ação de e-mail será aberto em um aplicativo para dispositivos móveis ou em um link da Web primeiro. O valor padrão é falso. Quando definido como verdadeiro, o link do código de ação será enviado como um link universal ou um link do app Android e será aberto pelo app, se estiver instalado. Caso seja "false", o código será enviado primeiro ao widget da Web e, em seguida, redirecionará para o app, se estiver instalado. |
setLinkDomain(String customDomain) |
Quando os domínios de link personalizados do Hosting são definidos
para um projeto, especifique qual deles usar quando o link for aberto por um app para dispositivos móveis
especificado. Caso contrário, o domínio padrão será selecionado automaticamente (por
exemplo,
PROJECT_ID.firebaseapp.com |
setDynamicLinkDomain(String dynamicLinkDomain) |
Obsoleto. Não especifique esse parâmetro. |
O exemplo a seguir ilustra como enviar um link de verificação de e-mail que
será aberto primeiro em um app para dispositivos móveis. O link direto conterá o payload do URL
de confirmação http://www.example.com/verify?uid=1234
.
Kotlin
val auth = Firebase.auth val user = auth.currentUser!! val url = "http://www.example.com/verify?uid=" + user.uid val actionCodeSettings = ActionCodeSettings.newBuilder() .setUrl(url) .setIOSBundleId("com.example.ios") // The default for this is populated with the current android package name. .setAndroidPackageName("com.example.android", false, null) .build() user.sendEmailVerification(actionCodeSettings) .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "Email sent.") } }
Java
FirebaseAuth auth = FirebaseAuth.getInstance(); FirebaseUser user = auth.getCurrentUser(); String url = "http://www.example.com/verify?uid=" + user.getUid(); ActionCodeSettings actionCodeSettings = ActionCodeSettings.newBuilder() .setUrl(url) .setIOSBundleId("com.example.ios") // The default for this is populated with the current android package name. .setAndroidPackageName("com.example.android", false, null) .build(); user.sendEmailVerification(actionCodeSettings) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d(TAG, "Email sent."); } } });
Como configurar links do Firebase Hosting
O Firebase Authentication usa Firebase Hosting ao enviar um link que deve ser aberto em um aplicativo para dispositivos móveis. Para usar esse recurso, os links do Hosting precisam ser configurados no console do Firebase.
Configurar apps Android:
- Se você planeja processar esses links do app Android, o nome do pacote do app precisa ser especificado nas configurações do projeto do console do Firebase. Além disso, o SHA-1 e o SHA-256 do certificado do aplicativo precisam ser fornecidos.
- Você também precisará configurar o filtro de intent para o link direto no
arquivo
AndroidManifest.xml
. - Para mais informações, consulte as Instruções para receber links do Hosting no Android.
Como configurar apps iOS:
- Se você planeja processar esses links no seu app iOS, será necessário configurar o domínio do link do Hosting como um domínio associado nos recursos do seu aplicativo.
- Para ver mais informações, consulte as Instruções para receber links do Hosting no iOS.
Processamento de ações de e-mail em um app da Web
Especifique se você quer processar o link do código de ação de um aplicativo da Web primeiro e, em seguida, redirecionar para outra página da Web ou app para dispositivos móveis após a conclusão, desde que esse app para dispositivos móveis esteja disponível.
Para isso, chame setHandleCodeInApp(false)
no objeto ActionCodeSettings.Builder Embora não seja necessário um ID do pacote
iOS ou um nome de pacote Android, fornecê-los permitirá ao usuário
ser redirecionado para o app especificado na conclusão do código de ação de e-mail.
O URL da Web usado aqui é aquele configurado na seção de modelos de ações de e-mail. Um padrão é provisionado para todos os projetos. Consulte Personalizar gerenciadores de e-mail para saber mais sobre como personalizar o gerenciador de ações de e-mail.
Neste caso, o link dentro do parâmetro de consulta continueUrl
será um link do Hosting com payload URL
especificado no objeto ActionCodeSettings
.
Ao processar ações de e-mail como a verificação, o código de ação do parâmetro de consulta oobCode
precisa ser analisado no link direto e aplicado via applyActionCode
para que a alteração seja concluída, ou seja, para que o e-mail seja verificado.
Processamento de ações de e-mail em um app para dispositivos móveis
É possível especificar se você quer processar o link do código de ação em seu aplicativo para dispositivos móveis primeiro, desde que esteja instalado. Se o link for clicado em um dispositivo não compatível com o aplicativo para dispositivos móveis, ele será aberto em uma página da Web. Para isso, chame setHandleCodeInApp(true)
no
objeto ActionCodeSettings.Builder O nome do pacote Android
ou o ID do pacote iOS do aplicativo para dispositivos móveis também precisa ser especificado.
O URL de fallback da Web usado aqui, quando nenhum aplicativo para dispositivos móveis está disponível, é aquele configurado na seção de modelos de ação de e-mail. Um padrão é provisionado para todos os projetos. Consulte Personalizar gerenciadores de e-mail para saber mais sobre como personalizar o gerenciador de ações de e-mail.
Neste caso, o link do app para dispositivos móveis enviado ao usuário
será um link do Hosting em que o payload é o URL do código de ação, configurado no console, com os parâmetros de
consultaoobCode
, mode
, apiKey
e continueUrl
. O último será o
URL
original especificado no
objeto ActionCodeSettings
. É possível aplicar o código de ação diretamente a partir de um app para dispositivos móveis da mesma forma que ele é processado no
fluxo da Web descrito na
seção Como personalizar gerenciadores de e-mail.
Ao processar ações de e-mail como a verificação, o código de ação do parâmetro de consulta oobCode
precisa ser analisado no link direto e aplicado via applyActionCode
para que a alteração seja concluída, ou seja, para que o e-mail seja verificado.