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 conteúdo que exige que ele esteja conectado. No entanto, o usuário pode ter esquecido sua senha e, portanto, acionar o fluxo de redefinição de senha. Ao 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 a assinatura.
Em outros casos, o usuário pode ter iniciado o fluxo em seu dispositivo móvel e esperar, após a verificação, retornar ao aplicativo móvel em vez do navegador.
Ter a capacidade de transmitir o estado por meio de um URL de continuação é um recurso poderoso que o Firebase Auth oferece e que pode melhorar significativamente a experiência do usuário.
Passando URL de estado/continuação em ações de e-mail
Para transmitir com segurança um URL de continuação, o domínio do URL precisará ser adicionado como um domínio autorizado 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 firebase.auth.ActionCodeSettings
precisa ser fornecida ao enviar um e-mail de redefinição de senha ou um e-mail de verificação. Esta interface leva os seguintes parâmetros:
Parâmetro | Tipo | Descrição |
---|---|---|
url | corda | Define o link (URL de estado/continuação) que tem significados diferentes em contextos diferentes:
|
iOS | ({bundleId: string}|indefinido) | 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. |
android | ({nomedopacote: string, installApp:boolean|indefinido, mínimoVersão: string|indefinido}|indefinido) | Define o nome do pacote Android. Isso tentará abrir o link em um aplicativo Android, se estiver instalado. Se installApp for aprovado, ele especifica se o aplicativo Android deve ser instalado se o dispositivo for compatível e o aplicativo ainda não estiver instalado. Se este campo for fornecido sem packageName , será gerado um erro explicando que packageName deve ser fornecido em conjunto com este campo. Se minimumVersion for especificada 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. |
handleCodeInApp | (booleano | indefinido) | Se o link de ação do 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 um link universal ou link do aplicativo Android e será aberto pelo aplicativo, se instalado. No caso falso, o código será enviado primeiro para o widget da web e, em seguida, continuará redirecionando para o aplicativo, se instalado. |
dynamicLinkDomain | (string | indefinido) | Define o domínio (ou subdomínio) do link dinâmico 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, este campo oferece a capacidade de escolher explicitamente um. 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 por e-mail que será aberto primeiro em um aplicativo móvel como um Firebase Dynamic Link usando o domínio de link dinâmico personalizado example.page.link
(aplicativo iOS com.example.ios
ou aplicativo Android com.example.android
onde o aplicativo será instalado, se ainda não estiver instalado e a versão mínima for 12
). O link direto conterá a carga útil do URL de continuação https://www.example.com/?email=user@example.com
.
var actionCodeSettings = {
url: 'https://www.example.com/?email=' + firebase.auth().currentUser.email,
iOS: {
bundleId: 'com.example.ios'
},
android: {
packageName: 'com.example.android',
installApp: true,
minimumVersion: '12'
},
handleCodeInApp: true,
// When multiple custom dynamic link domains are defined, specify which
// one to use.
dynamicLinkDomain: "example.page.link"
};
firebase.auth().currentUser.sendEmailVerification(actionCodeSettings)
.then(function() {
// Verification email sent.
})
.catch(function(error) {
// Error occurred. Inspect error.code.
});
Configurando links dinâmicos do Firebase
O Firebase Auth usa Firebase Dynamic Links ao enviar um link que deve ser aberto em um aplicativo móvel. Para usar esse recurso, os Dynamic Links precisam ser configurados no Firebase Console.
Ative links dinâmicos do Firebase:
- No console do Firebase , abra a seção Dynamic Links .
Se você ainda não aceitou os termos do Dynamic Links e criou um domínio do Dynamic Links, faça-o agora.
Se você já criou um domínio Dynamic Links, anote-o. Um domínio Dynamic Links 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.
Configurando aplicativos Android:
- Se você planeja lidar com esses links no 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 de aplicação precisam ser fornecidos.
- Você também precisará configurar o filtro de intent para o link direto em seu arquivo
AndroidManifest.xml
. - Para obter mais informações, consulte instruções sobre como receber links dinâmicos do Android .
Configurando aplicativos iOS:
- Se você planeja lidar com esses links no 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.
- Você também precisará configurar o domínio de link universal FDL como um domínio associado nos recursos do seu aplicativo.
- Se você planeja distribuir seu aplicativo para versões iOS 8 e anteriores, precisará definir o ID do pacote iOS como um esquema personalizado para URLs recebidos.
- Para obter mais informações, consulte instruções sobre como receber 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 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 definindo handleCodeInApp
como false
no objeto firebase.auth.ActionCodeSettings
. Embora um ID de pacote iOS ou um nome de pacote Android não sejam necessários, fornecê-los permitirá que o usuário redirecione de volta para o aplicativo especificado após a conclusão do código de ação do e-mail.
O URL da web usado aqui é aquele configurado na seção de modelos de ação de e-mail. Um padrão é provisionado para todos os projetos. Consulte customização de gerenciadores de email para saber mais sobre como personalizar o gerenciador de ações de email.
Nesse caso, o link dentro do 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 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 no link direto e aplicado por meio de applyActionCode
para que a alteração entre em vigor, ou seja, o e-mail seja verificado.
Lidando com ações de email 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 ele esteja instalado. Com aplicativos Android, você também pode especificar por meio do android.installApp
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 definindo handleCodeInApp
como true
no objeto firebase.auth.ActionCodeSettings
. O nome do pacote Android do aplicativo móvel ou o ID do pacote iOS também precisarão ser especificados.
O URL da web substituto usado aqui, quando nenhum aplicativo móvel 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 customização de gerenciadores de email para saber mais sobre como personalizar o gerenciador de ações de email.
Neste caso, o link do aplicativo móvel enviado ao usuário será um link FDL cujo payload é a URL do código de ação, configurado no Console, com os parâmetros de consulta oobCode
, mode
, apiKey
e continueUrl
. Este ú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 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 personalização de manipuladores de email .
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 no link direto e aplicado por meio de applyActionCode
para que a alteração entre em vigor, ou seja, o e-mail seja verificado.