Você pode transmitir o estado por meio de uma URL de continuação ao enviar ações de email para redefinições de senha ou verificar o email 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 for instalado em vez de uma página da web.
Isso pode ser extremamente útil nos seguintes cenários comuns:
Um usuário, não 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. Ao final do fluxo, o usuário espera voltar à 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 se inscrever. 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.
Ter a capacidade de passar o estado por meio de um URL de continuação é um recurso poderoso que o Firebase Auth fornece 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á 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, caso ainda não esteja 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. Essa interface recebe os seguintes parâmetros:
Parâmetro | Modelo | Descrição |
---|---|---|
url | fragmento | 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 | ({packageName: string, installApp:boolean|indefinido, MinimumVersion: 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 um packageName , será lançado um erro explicando que o packageName deve ser fornecido em conjunto com este campo. 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. |
handleCodeInApp | (booleano|indefinido) | 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 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, redirecionará para o aplicativo, se instalado. |
dynamicLinkDomain | (string|indefinido) | Define o domínio de link dinâmico (ou subdomínio) a ser usado para o link atual se ele for aberto usando Firebase Dynamic Links. Como vários domínios de link dinâmico podem ser configurados por projeto, esse campo fornece 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 de e-mail que será aberto em um aplicativo móvel primeiro como um Firebase Dynamic Link usando o domínio de link dinâmico personalizado example.page.link
(iOS app com.example.ios
ou Android app com.example.android
onde o app será instalado se ainda não estiver instalado e a versão mínima é 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 Firebase Dynamic Links
O Firebase Auth usa Firebase Dynamic Links ao enviar um link que deve ser aberto em um aplicativo móvel. Para usar esse recurso, o Dynamic Links precisa ser configurado no Console do Firebase.
Ative os 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 isso agora.
Se você já criou um domínio do Dynamic Links, anote-o. Um domínio do Dynamic Links geralmente 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 de seu aplicativo Android, o nome do pacote Android precisa ser especificado nas configurações do projeto Firebase Console. 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 intenção para o link profundo em seu arquivo
AndroidManifest.xml
. - Para saber mais sobre isso, consulte Como receber instruções do Android Dynamic Links .
Configurando aplicativos iOS:
- Se você planeja lidar com esses links de seu aplicativo iOS, o ID do pacote iOS precisa ser especificado nas configurações do projeto 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 em seus recursos de aplicativo.
- Se você planeja distribuir seu aplicativo para iOS versões 8 e inferiores, você precisará definir seu ID de pacote iOS como um esquema personalizado para URLs de entrada.
- 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 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 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 nome de pacote Android não seja necessário, fornecê-los permitirá que o usuário redirecione de volta para o aplicativo especificado na conclusão do código de ação de e-mail.
A URL da web usada aqui é aquela configurada na seção de modelos de ação de e-mail. Um padrão é fornecido para todos os projetos. Consulte customizando manipuladores de e-mail para saber mais sobre como personalizar o manipulador de ação de e-mail.
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 o uso da 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 a partir do link direto e aplicado por meio de applyActionCode
para que a alteração entre em vigor, ou seja, o e-mail a ser verificado.
Manipulando ações de e-mail em um aplicativo móvel
Você pode especificar se deseja manipular o link do código de ação em seu aplicativo móvel primeiro, desde que 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 suporte 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 ID do pacote iOS também precisará ser especificado.
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 é fornecido para todos os projetos. Consulte customizando manipuladores de e-mail para saber mais sobre como personalizar o manipulador de ação de e-mail.
Nesse 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 na 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 o uso da 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, de forma 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 por meio de applyActionCode
para que a alteração entre em vigor, ou seja, o e-mail a ser verificado.