Przekazywanie stanu w działaniach e-mail

Możesz przekazać stan za pomocą adresu URL kontynuacji podczas wysyłania e-maili z działaniami dotyczącymi resetowania hasła lub weryfikowania adresu e-mail użytkownika. Zapewnia to użytkownikowi możliwość powrotu do aplikacji po zakończeniu akcji. Ponadto możesz określić, czy link 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, która wymaga zalogowania użytkownika. Jednak użytkownik mógł zapomnieć swoje hasło i w związku z tym wyzwolić przepływ resetowania hasła. Na końcu 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 aplikacja biuletynu może wymagać od użytkownika weryfikacji adresu e-mail przed subskrypcją. Użytkownik przeszedłby proces weryfikacji adresu e-mail i spodziewałby się, że wróci do aplikacji, aby dokończyć subskrypcję.

  • Ogólnie rzecz biorąc, gdy użytkownik rozpoczyna proces resetowania hasła lub weryfikacji adresu e-mail w aplikacji Apple, oczekuje, że zakończy ten proces w aplikacji; umożliwia to możliwość przekazywania stanu za pośrednictwem adresu URL kontynuacji.

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

Przekazywanie adresu URL stanu/kontynuacji w akcjach e-mail

Aby bezpiecznie przekazać adres URL kontynuacji, domena adresu URL musi być umieszczona na białej liście w konsoli Firebase . Odbywa się to w sekcji Uwierzytelnianie poprzez dodanie tej domeny do listy Autoryzowanych domen 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ę FIRActionCodeSettings . Ten interfejs przyjmuje następujące parametry:

Szybki

Parametr Rodzaj 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 czynności internetowych, jest to łącze precyzyjne w parametrze zapytania continueUrl .
  • Gdy łącze jest obsługiwane bezpośrednio w aplikacji, jest to parametr zapytania continueUrl w precyzyjnym łączu łącza dynamicznego.
iOSBundleID Strunowy Ustawia identyfikator pakietu. Spowoduje to próbę otwarcia łącza w aplikacji Apple, jeśli jest zainstalowana. Aplikacja musi być zarejestrowana w konsoli. Jeśli nie podano identyfikatora pakietu, wartość tego pola jest ustawiona na identyfikator pakietu głównego aplikacji.
androidPackageName Strunowy Ustawia nazwę pakietu Android. Spowoduje to próbę otwarcia łącza w aplikacji na Androida, jeśli jest zainstalowana.
androidInstallIfNotAvailable Bool 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 nazwy pakietu, zostanie zgłoszony błąd wyjaśniający, że nazwa pakietu musi zostać podana w połączeniu z tym polem.
androidMinimumVersion Strunowy Minimalna wersja aplikacji obsługiwana w tym przepływie. Jeśli określono minimalną wersję i zainstalowano starszą wersję aplikacji, użytkownik zostanie przeniesiony do Sklepu Play w celu uaktualnienia aplikacji. Aplikacja na Androida musi być zarejestrowana w konsoli.
handleCodeInApp Bool Czy link akcji e-mail zostanie najpierw otwarty w aplikacji mobilnej, czy w linku internetowym. Wartość domyślna to fałsz. W przypadku ustawienia wartości true łącze z kodem akcji zostanie wysłane 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 przekieruje do aplikacji, jeśli jest zainstalowana.
dynamicLinkDomain Strunowy Ustawia domenę (lub subdomenę) łącza dynamicznego, która ma być używana dla bieżącego łącza, jeśli ma zostać otwarte za pomocą łączy dynamicznych Firebase. Ponieważ dla każdego projektu można skonfigurować wiele domen łączy dynamicznych, to pole umożliwia jawny wybór jednej z nich. Jeśli żaden nie zostanie podany, domyślnie używana jest pierwsza domena.

Cel C

Parametr Rodzaj Opis
URL NSString

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

  • Gdy łącze jest obsługiwane w widżetach czynności internetowych, jest to łącze precyzyjne w parametrze zapytania continueUrl .
  • Gdy łącze jest obsługiwane bezpośrednio w aplikacji, jest to parametr zapytania continueUrl w precyzyjnym łączu łącza dynamicznego.
iOSBundleID NSString Ustawia identyfikator pakietu. Spowoduje to próbę otwarcia łącza w aplikacji Apple, jeśli jest zainstalowana. Aplikacja musi być zarejestrowana w konsoli.
androidPackageName NSString Ustawia nazwę pakietu Android. Spowoduje to próbę otwarcia łącza w aplikacji na Androida, jeśli jest zainstalowana.
androidInstallIfNotAvailable BOOL 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 nazwy pakietu, zostanie zgłoszony błąd wyjaśniający, że nazwa pakietu musi zostać podana w połączeniu z tym polem.
androidMinimumVersion NSString Minimalna wersja aplikacji obsługiwana w tym przepływie. Jeśli określono minimalną wersję i zainstalowano starszą wersję aplikacji, użytkownik zostanie przeniesiony do Sklepu Play w celu uaktualnienia aplikacji. Aplikacja na Androida musi być zarejestrowana w konsoli.
handleCodeInApp BOOL Czy link akcji e-mail zostanie najpierw otwarty w aplikacji mobilnej, czy w linku internetowym. Wartość domyślna to fałsz. W przypadku ustawienia wartości true łącze z kodem akcji zostanie wysłane 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 przekieruje do aplikacji, jeśli jest zainstalowana.
dynamicLinkDomain NSString Ustawia domenę (lub subdomenę) łącza dynamicznego, która ma być używana dla bieżącego łącza, jeśli ma zostać otwarte za pomocą łączy dynamicznych Firebase. Ponieważ dla każdego projektu można skonfigurować wiele domen łączy dynamicznych, to pole umożliwia jawny wybór jednej z nich. Jeśli żaden nie zostanie podany, domyślnie używana jest pierwsza domena.

Poniższy przykład ilustruje, jak wysłać link weryfikacyjny e-mail, który otworzy się najpierw 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 , gdzie aplikacja zostanie zainstalowana, jeśli nie jest jeszcze zainstalowana, a minimalna wersja to 12 ). Precyzyjny link będzie zawierał ładunek adresu URL kontynuacji https://www.example.com/?email=user@example.com .

Szybki


var actionCodeSettings =  ActionCodeSettings.init()
actionCodeSettings.canHandleInApp = true
let user = Auth.auth().currentUser()
actionCodeSettings.URL =
    String(format: "https://www.example.com/?email=%@", user.email)
actionCodeSettings.iOSbundleID = Bundle.main.bundleIdentifier!
actionCodeSettings.setAndroidPakageName("com.example.android",
                                         installIfNotAvailable:true,
                                         minumumVersion:"12")
// When multiple custom dynamic link domains are defined, specify which one to use.
actionCodeSettings.dynamicLinkDomain = "example.page.link"
user.sendEmailVerification(withActionCodeSettings:actionCodeSettings { error in
  if error {
    // Error occurred. Inspect error.code and handle error.
    return
  }
  // Email verification sent.
})

Cel C

 FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init];
 actionCodeSettings.handleCodeInApp = YES;
 FIRUser *user = [FIRAuth auth].currentUser;
 NSString *urlString =
     [NSString stringWithFormat:@"https://www.example.com/?email=%@", user.email];
 actionCodeSettings.URL = [NSURL URLWithString:urlString];
 actionCodeSettings.iOSBundleID = [NSBundle mainBundle].bundleIdentifier;
 // When multiple custom dynamic link domains are defined, specify which one to use.
 actionCodeSettings.dynamicLinkDomain = @"example.page.link";
 [actionCodeSettings setAndroidPackageName:@"com.example.android"
                     installIfNotAvailable:YES
                            minimumVersion:'12'];
 [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings
                                        completion:^(NSError *_Nullable error) {
   if (error) {
     // Error occurred. Inspect error.code and handle error.
     return;
   }
   // Email verification sent.
 }];

Firebase Auth używa łączy dynamicznych Firebase podczas wysyłania linku, który ma zostać otwarty w aplikacji mobilnej. Aby korzystać z tej funkcji, linki dynamiczne muszą być skonfigurowane w konsoli Firebase.

  1. Włącz linki dynamiczne Firebase:

    1. W konsoli Firebase otwórz sekcję Linki dynamiczne .
    2. Jeśli jeszcze nie zaakceptowałeś warunków korzystania z łączy dynamicznych i nie utworzyłeś domeny z łączami dynamicznymi, zrób to teraz.

      Jeśli masz już utworzoną domenę z linkami dynamicznymi, zanotuj to. Domena z linkami dynamicznymi zazwyczaj wygląda tak, jak w poniższym przykładzie:

      example.page.link

      Ta wartość będzie potrzebna podczas konfigurowania aplikacji Apple lub Android do przechwytywania łącza przychodzącego.

  2. Konfigurowanie aplikacji na Androida:

    1. Jeśli planujesz obsługiwać te linki z aplikacji na Androida, nazwa pakietu Android musi zostać określona 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 precyzyjnego linku w pliku AndroidManifest.xml.
    3. Więcej informacji na ten temat można znaleźć w instrukcji Odbieranie linków dynamicznych systemu Android .
  3. Konfigurowanie aplikacji Apple:

    1. Jeśli planujesz obsługiwać te łącza ze swojej aplikacji, identyfikator pakietu należy określić w ustawieniach projektu konsoli Firebase. Ponadto należy również określić identyfikator App Store i Apple Developer Team ID.
    2. Będziesz także musiał skonfigurować domenę łącza uniwersalnego FDL jako domenę stowarzyszoną w swoich możliwościach aplikacji.
    3. Jeśli planujesz rozpowszechniać swoją aplikację w systemie iOS w wersji 8 i starszych, musisz ustawić swój identyfikator pakietu jako niestandardowy schemat dla przychodzących adresów URL.
    4. Więcej informacji na ten temat można znaleźć w instrukcji Odbieranie linków dynamicznych platform Apple .

Obsługa akcji e-mail w aplikacji internetowej

Możesz określić, czy chcesz najpierw obsłużyć link kodu akcji z aplikacji internetowej, a następnie przekierować do innej strony internetowej lub aplikacji mobilnej po pomyślnym zakończeniu, pod warunkiem, że aplikacja mobilna jest dostępna. Odbywa się to poprzez ustawienie dla handleCodeInApp false w obiekcie FIRActionCodeSettings (Obj-C) lub ActionCodeSettings (Swift). Identyfikator pakietu ani nazwa pakietu Android nie są wymagane, ale podanie ich umożliwi użytkownikowi przekierowanie z powrotem do określonej aplikacji po zakończeniu działania kodu e-mail.

Użyty tutaj internetowy adres URL to adres skonfigurowany w sekcji szablonów akcji e-mail. Domyślny jest udostępniany dla wszystkich projektów. Zapoznaj się z tematem Dostosowywanie programów obsługi wiadomości e-mail , aby dowiedzieć się więcej na temat dostosowywania programu obsługi działań poczty e-mail.

W takim przypadku łącze w parametrze zapytania continueURL będzie łączem FDL, którego ładunkiem jest URL określony w obiekcie ActionCodeSettings . Chociaż możesz przechwycić i obsłużyć link przychodzący ze swojej aplikacji bez żadnych dodatkowych zależności, zalecamy użycie biblioteki klienta FDL do przeanalizowania precyzyjnego linku.

Podczas obsługi akcji e-mail, takich jak weryfikacja adresu e-mail, kod akcji z parametru zapytania oobCode musi zostać przeanalizowany z precyzyjnego łącza, a następnie zastosowany za pomocą applyActionCode , aby zmiana zaczęła obowiązywać, tj. została zweryfikowana wiadomość e-mail.

Obsługa akcji email w aplikacji mobilnej

Możesz określić, czy chcesz najpierw obsłużyć link kodu akcji w aplikacji mobilnej, o ile jest ona zainstalowana. Dzięki aplikacjom na Androida masz również możliwość określenia za pomocą androidInstallIfNotAvailable , że aplikacja ma zostać zainstalowana, jeśli urządzenie ją obsługuje i nie jest jeszcze zainstalowana. Jeśli link zostanie kliknięty z urządzenia, które nie obsługuje aplikacji mobilnej, zamiast tego zostanie otwarty ze strony internetowej. Odbywa się to poprzez ustawienie handleCodeInApp na wartość true w obiekcie FIRActionCodeSettings (Obj-C) lub ActionCodeSettings (Swift). Konieczne będzie również określenie nazwy pakietu lub identyfikatora pakietu aplikacji mobilnej na Androida. Zastępczy internetowy adres URL używany tutaj, gdy żadna aplikacja mobilna nie jest dostępna, to adres skonfigurowany w sekcji szablonów działań e-mail. Domyślny jest udostępniany dla wszystkich projektów. Zapoznaj się z tematem Dostosowywanie programów obsługi wiadomości e-mail , aby dowiedzieć się więcej na temat dostosowywania programu obsługi działań poczty e-mail.

W tym przypadku łącze aplikacji mobilnej wysłane do użytkownika będzie łączem FDL, którego ładunkiem jest adres URL kodu akcji, skonfigurowany w konsoli, z parametrami zapytania oobCode , mode , apiKey i continueUrl . Ten ostatni będzie oryginalnym URL określonym w obiekcie FIRActionCodeSettings (Obj-C) lub ActionCodeSettings (Swift). Chociaż możesz przechwycić i obsłużyć link przychodzący ze swojej aplikacji bez żadnych dodatkowych zależności, zalecamy użycie biblioteki klienta FDL do przeanalizowania precyzyjnego linku. Kod akcji można zastosować bezpośrednio z aplikacji mobilnej, podobnie jak w przypadku przepływu internetowego opisanego w sekcji dotyczącej dostosowywania obsługi poczty e-mail .

Podczas obsługi akcji e-mail, takich jak weryfikacja adresu e-mail, kod akcji z parametru zapytania oobCode musi zostać przeanalizowany z precyzyjnego łącza, a następnie zastosowany za pomocą applyActionCode , aby zmiana zaczęła obowiązywać, tj. została zweryfikowana wiadomość e-mail.