Przekazywanie stanu w działaniach e-mail

Możesz przekazać stan poprzez adres URL kontynuacji podczas wysyłania akcji e-mail w celu zresetowania hasła lub weryfikacji adresu e-mail użytkownika. Dzięki temu użytkownik może wrócić do aplikacji po zakończeniu akcji. Ponadto możesz określić, czy link do akcji e-mail ma być obsługiwany bezpośrednio z aplikacji mobilnej, gdy jest ona zainstalowana zamiast strony internetowej.

Może to być niezwykle przydatne w następujących typowych scenariuszach:

  • Użytkownik, który nie jest aktualnie zalogowany, może próbować uzyskać dostęp do zawartości wymagającej zalogowania. Użytkownik mógł jednak zapomnieć swojego hasła i w związku z tym uruchomić proces resetowania hasła. Pod koniec przepływu użytkownik spodziewa się wrócić do sekcji aplikacji, do której próbował uzyskać dostęp.

  • Aplikacja może oferować dostęp tylko do zweryfikowanych kont. Na przykład biuletyn może wymagać od użytkownika weryfikacji adresu e-mail przed subskrypcją. Użytkownik przejdzie przez proces weryfikacji e-mailem i spodziewa się wrócić do aplikacji, aby dokończyć subskrypcję.

  • W innych przypadkach użytkownik mógł rozpocząć przepływ ze swojego urządzenia mobilnego i po weryfikacji spodziewać się powrotu do aplikacji mobilnej zamiast do przeglądarki.

Możliwość przekazywania stanu za pośrednictwem adresu URL kontynuacji to potężna funkcja udostępniana przez Firebase Auth, która może znacznie poprawić komfort użytkownika.

Przekazywanie adresu URL stanu/kontynuowania w akcjach e-mailowych

Aby bezpiecznie przekazać dalszy adres URL, domenę tego adresu należy dodać jako domenę autoryzowaną w konsoli Firebase . Dokonuje się tego w sekcji Uwierzytelnianie poprzez dodanie tej domeny do listy Domen autoryzowanych w zakładce Metoda logowania, jeśli jeszcze jej tam nie ma.

Podczas wysyłania wiadomości e-mail dotyczącej resetowania hasła lub wiadomości weryfikacyjnej należy podać instancję firebase.auth.ActionCodeSettings . Interfejs ten przyjmuje następujące parametry:

Parametr Typ Opis
url strunowy

Ustawia link (adres URL stanu/kontynuacji), który ma różne znaczenia w różnych kontekstach:

  • Gdy łącze jest obsługiwane w widżetach akcji sieciowych, jest to łącze głębokie w parametrze continueUrl .
  • Gdy łącze jest obsługiwane bezpośrednio w aplikacji, jest to parametr continueUrl w głębokim łączu łącza dynamicznego.
iOS ({bundleId: string}|niezdefiniowany) Ustawia identyfikator pakietu iOS. Spowoduje to próbę otwarcia łącza w aplikacji na iOS, jeśli jest zainstalowana. Aplikacja na iOS musi być zarejestrowana w Konsoli.
android ({nazwa pakietu: string, installApp:boolean|niezdefiniowana, minimalna wersja: ciąg|niezdefiniowana}|niezdefiniowana) Ustawia nazwę pakietu Androida. Spowoduje to próbę otwarcia łącza w aplikacji na Androida, jeśli jest zainstalowana. Jeśli installApp zostanie przekazany, określa, czy zainstalować aplikację na Androida, jeśli urządzenie ją obsługuje, a aplikacja nie jest jeszcze zainstalowana. Jeśli to pole zostanie podane bez packageName , zostanie zgłoszony błąd wyjaśniający, że w połączeniu z tym polem należy podać packageName . Jeśli określono minimumVersion i zainstalowano starszą wersję aplikacji, użytkownik zostanie przeniesiony do Sklepu Play w celu uaktualnienia aplikacji. Aplikację na Androida należy zarejestrować w Konsoli.
handleCodeInApp (logiczna|nieokreślona) Określa, czy link do akcji e-mail zostanie najpierw otwarty w aplikacji mobilnej, czy w łączu internetowym. Wartość domyślna to fałsz. Jeśli ma wartość true, link do kodu akcji zostanie wysłany jako łącze uniwersalne lub łącze do aplikacji na Androida i zostanie otwarte przez aplikację, jeśli jest zainstalowana. W fałszywym przypadku kod zostanie najpierw wysłany do widżetu internetowego, a następnie kontynuowanie przekieruje do aplikacji, jeśli jest zainstalowana.
dynamicLinkDomain (ciąg|nieokreślony) Ustawia domenę (lub subdomenę) łącza dynamicznego, która będzie używana dla bieżącego łącza, jeśli ma ono zostać otwarte przy użyciu łączy dynamicznych Firebase. Ponieważ w jednym projekcie można skonfigurować wiele domen łączy dynamicznych, to pole umożliwia wyraźny wybór jednej. Jeśli nie podano żadnej, domyślnie używana jest pierwsza domena.

Poniższy przykład ilustruje sposób wysłania linku weryfikacyjnego za pomocą adresu e-mail, który najpierw otworzy się w aplikacji mobilnej jako link dynamiczny Firebase, przy użyciu niestandardowej domeny linku dynamicznego example.page.link (aplikacja na iOS com.example.ios lub aplikacja na Androida com.example.android , na którym aplikacja zostanie zainstalowana, jeśli nie została jeszcze zainstalowana, a minimalna wersja to 12 ). Głęboki link będzie zawierał ładunek adresu URL 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.
  });

Firebase Auth korzysta z Firebase Dynamic Links podczas wysyłania linku, który ma zostać otwarty w aplikacji mobilnej. Aby móc korzystać z tej funkcji, należy skonfigurować łącza dynamiczne w konsoli Firebase.

  1. Włącz łącza dynamiczne Firebase:

    1. W konsoli Firebase otwórz sekcję Linki dynamiczne .
    2. Jeśli jeszcze nie zaakceptowałeś warunków Linków Dynamicznych i nie utworzyłeś domeny Dynamic Links, zrób to teraz.

      Jeśli masz już domenę Dynamic Links, zanotuj to. Domena Linków Dynamicznych zazwyczaj wygląda jak w poniższym przykładzie:

      example.page.link

      Ta wartość będzie Ci potrzebna podczas konfigurowania aplikacji na urządzenia Apple lub Android w celu przechwytywania łącza przychodzącego.

  2. Konfiguracja aplikacji na Androida:

    1. Jeśli planujesz obsługiwać te łącza z aplikacji na Androida, nazwę pakietu Android należy określić w ustawieniach projektu konsoli Firebase. Ponadto należy podać SHA-1 i SHA-256 certyfikatu aplikacji.
    2. Będziesz także musiał skonfigurować filtr intencji dla głębokiego linku w pliku AndroidManifest.xml .
    3. Więcej informacji na ten temat znajdziesz w instrukcji odbierania łączy dynamicznych Androida .
  3. Konfigurowanie aplikacji na iOS:

    1. Jeśli planujesz obsługiwać te łącza z aplikacji na iOS, identyfikator pakietu iOS musi zostać określony w ustawieniach projektu konsoli Firebase. Ponadto należy podać identyfikator App Store i identyfikator zespołu programistów Apple.
    2. Będziesz także musiał skonfigurować domenę łącza uniwersalnego FDL jako domenę skojarzoną w możliwościach swojej aplikacji.
    3. Jeśli planujesz rozpowszechniać swoją aplikację na iOS w wersji 8 i starszej, musisz ustawić identyfikator pakietu iOS jako niestandardowy schemat dla przychodzących adresów URL.
    4. Więcej informacji na ten temat można znaleźć w instrukcji odbierania łączy dynamicznych w systemie iOS .

Obsługa akcji e-mailowych w aplikacji webowej

Możesz określić, czy chcesz najpierw obsłużyć link do kodu akcji z aplikacji internetowej, a następnie po pomyślnym zakończeniu przekierować do innej strony internetowej lub aplikacji mobilnej, o ile aplikacja mobilna jest dostępna. Można to osiągnąć poprzez ustawienie handleCodeInApp na false w obiekcie firebase.auth.ActionCodeSettings . Chociaż identyfikator pakietu iOS ani nazwa pakietu Android nie są wymagane, podanie ich umożliwi użytkownikowi przekierowanie z powrotem do określonej aplikacji po ukończeniu kodu akcji e-mail.

Używany tutaj adres internetowy jest adresem skonfigurowanym w sekcji szablonów akcji e-mail. Domyślny jest udostępniany dla wszystkich projektów. Więcej informacji na temat dostosowywania obsługi akcji e-mail można znaleźć w artykule Dostosowywanie programów obsługi poczty e-mail.

W tym przypadku łącze w parametrze continueUrl będzie łączem FDL, którego ładunkiem jest URL określony w obiekcie ActionCodeSettings . Chociaż możesz przechwytywać i obsługiwać link przychodzący z aplikacji bez żadnych dodatkowych zależności, zalecamy użycie biblioteki klienta FDL do przeanalizowania głębokiego linku.

Podczas obsługi akcji e-mailowych, takich jak weryfikacja adresu e-mail, kod akcji z parametru zapytania oobCode musi zostać przeanalizowany z głębokiego linku, a następnie zastosowany za pomocą applyActionCode , aby zmiana odniosła skutek, tj. e-mail został zweryfikowany.

Obsługa akcji e-mailowych w aplikacji mobilnej

Możesz określić, czy chcesz najpierw obsługiwać link do kodu akcji w swojej aplikacji mobilnej, pod warunkiem, że jest ona zainstalowana. W przypadku aplikacji na Androida możesz także określić za pomocą android.installApp , że aplikacja ma zostać zainstalowana, jeśli urządzenie ją obsługuje i nie jest jeszcze zainstalowana. Jeśli link zostanie kliknięty na urządzeniu, które nie obsługuje aplikacji mobilnej, zostanie on otwarty ze strony internetowej. Odbywa się to poprzez ustawienie handleCodeInApp na true w obiekcie firebase.auth.ActionCodeSettings . Należy również podać nazwę pakietu aplikacji mobilnej na Androida lub identyfikator pakietu na iOS.

Zastępczy adres URL używany tutaj, gdy nie jest dostępna żadna aplikacja mobilna, to ten skonfigurowany w sekcji szablonów akcji e-mail. Domyślny jest udostępniany dla wszystkich projektów. Więcej informacji na temat dostosowywania obsługi akcji e-mail można znaleźć w artykule Dostosowywanie programów obsługi poczty e-mail.

W tym przypadku łącze do aplikacji mobilnej wysyłane do użytkownika będzie łączem FDL, którego ładunkiem będzie adres URL kodu akcji skonfigurowany w Konsoli z parametrami zapytania oobCode , mode , apiKey continueUrl . Ten ostatni będzie oryginalnym URL określonym w obiekcie ActionCodeSettings . Chociaż możesz przechwytywać i obsługiwać link przychodzący z aplikacji bez żadnych dodatkowych zależności, zalecamy użycie biblioteki klienta FDL do przeanalizowania głębokiego linku. Kod akcji można zastosować bezpośrednio z aplikacji mobilnej, podobnie jak jest to obsługiwane w przepływie sieciowym opisanym w sekcji dostosowywanie programów obsługi poczty e-mail .

Podczas obsługi akcji e-mailowych, takich jak weryfikacja adresu e-mail, kod akcji z parametru zapytania oobCode musi zostać przeanalizowany z głębokiego linku, a następnie zastosowany za pomocą applyActionCode , aby zmiana odniosła skutek, tj. e-mail został zweryfikowany.