Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Estado de passagem em ações de e-mail

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Você pode passar o estado por meio de um URL de continuação ao enviar ações de e-mail para redefinições de senha ou verificar o e-mail de um usuário. Isso fornece ao usuário a capacidade de voltar ao aplicativo após a conclusão da ação. Além disso, você pode especificar se deseja manipular o link de ação de e-mail diretamente de um aplicativo móvel quando ele estiver instalado, em vez de uma página da Web.

Isso pode ser extremamente útil nos seguintes cenários comuns:

  • Um usuário que não está conectado no momento pode estar tentando acessar o conteúdo que exige que o usuário esteja conectado. No entanto, o usuário pode ter esquecido sua senha e, portanto, acionar o fluxo de redefinição de senha. No final do fluxo, o usuário espera voltar para a seção do aplicativo que estava tentando acessar.

  • Um aplicativo só pode oferecer acesso a contas verificadas. Por exemplo, um boletim informativo pode exigir que o usuário verifique seu e-mail antes de assinar. O usuário passaria pelo fluxo de verificação de e-mail e esperaria voltar ao aplicativo para concluir sua assinatura.

  • Em outros casos, o usuário pode ter iniciado o fluxo de seu dispositivo móvel e esperar após a verificação retornar ao aplicativo móvel em vez do navegador.

A capacidade de passar o estado por meio de um URL de continuação é um recurso poderoso fornecido pelo Firebase Auth e que pode melhorar significativamente a experiência do usuário.

Passando estado/continuar URL em ações de e-mail

Para transmitir com segurança um URL de continuação, o domínio do URL precisará estar na lista de permissões no console do Firebase . Isso é feito na seção Autenticação , adicionando este domínio à lista de domínios autorizados na guia Método de login, se ainda não estiver lá.

Uma instância ActionCodeSettings precisa ser fornecida ao enviar um e-mail de redefinição de senha ou um e-mail de verificação. Ele pode ser criado com a classe ActionCodeSettings.Builder associada que contém os seguintes métodos:

Método Descrição
setUrl(String url)

Define o link (URL de estado/continuação) que tem significados diferentes em contextos diferentes:

  • Quando o link é tratado nos widgets de ação da Web, esse é o link direto no parâmetro de consulta continueUrl .
  • Quando o link é tratado diretamente no aplicativo, esse é o parâmetro de consulta continueUrl no link direto do Link dinâmico.
setIOSBundleId(String iOSBundleId) Define o ID do pacote iOS. Isso tentará abrir o link em um aplicativo iOS, se estiver instalado. O aplicativo iOS precisa ser registrado no Console.
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) Define o nome do pacote Android. Isso tentará abrir o link em um aplicativo Android, se estiver instalado. Se installIfNotAvailable estiver definido como true , ele especificará se o aplicativo Android deve ser instalado se o dispositivo for compatível e o aplicativo ainda não estiver instalado. Se MinimumVersion for especificado e uma versão mais antiga do aplicativo estiver instalada, o usuário será levado à Play Store para atualizar o aplicativo. O aplicativo Android precisa ser registrado no Console.
setHandleCodeInApp(boolean status) Se o link de ação de e-mail será aberto primeiro em um aplicativo móvel ou em um link da Web. O padrão é falso. Quando definido como verdadeiro, o link do código de ação será enviado como Universal Link ou Android App Link e será aberto pelo aplicativo, se instalado. No caso falso, o código será enviado primeiro para o widget da web e, em continuar, redirecionará para o aplicativo, se instalado.
setDynamicLinkDomain(String dynamicLinkDomain) Define o domínio do link dinâmico (ou subdomínio) a ser usado para o link atual se ele for aberto usando o Firebase Dynamic Links. Como vários domínios de link dinâmico podem ser configurados por projeto, esse campo fornece a capacidade de escolher um explicitamente. Se nenhum for fornecido, o primeiro domínio será usado por padrão.

O exemplo a seguir ilustra como enviar um link de verificação de e-mail que será aberto primeiro em um aplicativo para dispositivos móveis como um Firebase Dynamic Link (iOS app com.example.ios ou Android app com.example.android ). O link direto conterá a carga útil do URL de continuação https://www.example.com/?email=user@example.com .

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.");
                }
            }
        });

Kotlin+KTX

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.")
            }
        }

O Firebase Auth usa o Firebase Dynamic Links ao enviar um link que deve ser aberto em um aplicativo para dispositivos móveis. Para usar esse recurso, os links dinâmicos precisam ser configurados no Firebase Console.

  1. Ative os links dinâmicos do Firebase:

    1. No console do Firebase , abra a seção Dynamic Links .
    2. Se você ainda não aceitou os termos do Dynamic Links e criou um domínio do Dynamic Links, faça isso agora.

      Se você já criou um domínio de links dinâmicos, anote-o. Um domínio de links dinâmicos normalmente se parece com o exemplo a seguir:

      example.page.link

      Você precisará desse valor ao configurar seu aplicativo Apple ou Android para interceptar o link de entrada.

  2. Configurando aplicativos Android:

    1. Se você planeja lidar com esses links de seu aplicativo Android, o nome do pacote Android precisa ser especificado nas configurações do projeto do Firebase Console. Além disso, o SHA-1 e o SHA-256 do certificado do aplicativo precisam ser fornecidos.
    2. Você também precisará configurar o filtro de intenção para o link direto em seu arquivo AndroidManifest.xml.
    3. Para saber mais sobre isso, consulte as instruções de recebimento de links dinâmicos do Android .
  3. Configurando aplicativos iOS:

    1. Se você planeja lidar com esses links do seu aplicativo iOS, o ID do pacote iOS precisa ser especificado nas configurações do projeto do Firebase Console. Além disso, o ID da App Store e o ID da equipe de desenvolvedores da Apple também precisam ser especificados.
    2. Você também precisará configurar o domínio de link universal FDL como um domínio associado em seus recursos de aplicativo.
    3. Se você planeja distribuir seu aplicativo para as versões 8 e inferiores do iOS, será necessário definir o ID do pacote iOS como um esquema personalizado para URLs de entrada.
    4. Para saber mais sobre isso, consulte as instruções de recebimento de links dinâmicos do iOS .

Manipulando ações de e-mail em um aplicativo da web

Você pode especificar se deseja manipular primeiro o link do código de ação de um aplicativo da Web e, em seguida, redirecionar para outra página da Web ou aplicativo móvel após a conclusão bem-sucedida, desde que o aplicativo móvel esteja disponível. Isso é feito chamando setHandleCodeInApp(false) no objeto ActionCodeSettings.Builder . Embora um ID de pacote iOS ou nome de pacote Android não seja necessário, fornecê-los permitirá que o usuário redirecione de volta ao aplicativo especificado na conclusão do código de ação de email.

A URL da web usada aqui é aquela configurada na seção de modelos de ação de email. Um padrão é provisionado para todos os projetos. Consulte a personalização de manipuladores de e-mail para saber mais sobre como personalizar o manipulador de ações de e-mail.

Nesse caso, o link no parâmetro de consulta continueUrl será um link FDL cuja carga útil é a URL especificada no objeto ActionCodeSettings . Embora você possa interceptar e manipular o link de entrada do seu aplicativo sem qualquer dependência adicional, recomendamos usar a biblioteca de cliente FDL para analisar o link direto para você.

Ao lidar com ações de e-mail, como verificação de e-mail, o código de ação do parâmetro de consulta oobCode precisa ser analisado a partir do link direto e aplicado via applyActionCode para que a alteração tenha efeito, ou seja, o e-mail seja verificado.

Manipulando ações de e-mail em um aplicativo móvel

Você pode especificar se deseja manipular primeiro o link do código de ação em seu aplicativo móvel, desde que esteja instalado. Com aplicativos Android, você também pode especificar por meio do booleano installIfNotAvailable que o aplicativo deve ser instalado se o dispositivo for compatível e ainda não estiver instalado. Se o link for clicado em um dispositivo que não suporta o aplicativo móvel, ele será aberto em uma página da Web. Isso é feito chamando setHandleCodeInApp(true) no objeto ActionCodeSettings.Builder . O nome do pacote Android do aplicativo móvel ou o ID do pacote iOS também precisarão ser especificados.

A URL da Web de fallback usada aqui, quando nenhum aplicativo móvel está disponível, é aquela configurada na seção de modelos de ação de email. Um padrão é provisionado para todos os projetos. Consulte a personalização de manipuladores de e-mail para saber mais sobre como personalizar o manipulador de ações de e-mail.

Nesse caso, o link do aplicativo móvel enviado ao usuário será um link FDL cujo payload é o URL do código de ação, configurado no Console, com os parâmetros de consulta oobCode , mode , apiKey e continueUrl . O último será o URL original especificado no objeto ActionCodeSettings . Embora você possa interceptar e manipular o link de entrada do seu aplicativo sem qualquer dependência adicional, recomendamos usar a biblioteca de cliente FDL para analisar o link direto para você. O código de ação pode ser aplicado diretamente de um aplicativo móvel semelhante à forma como é tratado no fluxo da Web descrito na seção de customização de manipuladores de e-mail .

Ao lidar com ações de e-mail, como verificação de e-mail, o código de ação do parâmetro de consulta oobCode precisa ser analisado a partir do link direto e aplicado via applyActionCode para que a alteração tenha efeito, ou seja, o e-mail seja verificado.