Stan zaliczenia w działaniach e-maili

Podczas wysyłania e-maili z działaniami dotyczącymi resetowania hasła lub weryfikacji adresu e-mail użytkownika możesz przekazać stan za pomocą adresu URL kontynuacji. Dzięki temu użytkownik może wrócić do aplikacji po wykonaniu działania. Możesz też określić, czy link do działania w e-mailu ma być obsługiwany bezpośrednio w aplikacji mobilnej, gdy jest ona zainstalowana, zamiast strony internetowej.

Może to być bardzo przydatne w tych typowych sytuacjach:

  • Użytkownik, który nie jest obecnie zalogowany, może próbować uzyskać dostęp do treści, które wymagają zalogowania. Użytkownik może jednak zapomnieć hasło i w ten sposób uruchomić proces resetowania hasła. Użytkownik oczekuje, że po zakończeniu procesu wróci do sekcji aplikacji, do której próbował uzyskać dostęp.

  • Aplikacja może oferować dostęp tylko zweryfikowanym kontom. Na przykład aplikacja z newsletterem może wymagać od użytkownika potwierdzenia adresu e-mail przed subskrypcją. Użytkownik przechodzi proces weryfikacji e-maila i oczekuje, że po zakończeniu procesu wróci do aplikacji, aby dokończyć subskrypcję.

  • Gdy użytkownik rozpoczyna proces resetowania hasła lub weryfikacji e-maila w aplikacji Apple, oczekuje, że proces zostanie ukończony w aplikacji. Umożliwia to przekazywanie stanu za pomocą adresu URL kontynuacji.

Możliwość przekazywania stanu za pomocą adresu URL kontynuacji to potężna funkcja, którą zapewnia Firebase Auth i która może znacznie poprawić wrażenia użytkownika.

Przekazywanie stanu adresu URL dalszego działania w działaniach e-mail

Aby bezpiecznie przekazywać adres URL dalszego działania, musisz dodać domenę tego adresu do białej listy w konsoli Firebase. Aby to zrobić, w sekcji Uwierzytelnianie dodaj tę domenę do listy Autoryzowane domeny na karcie Metoda logowania, jeśli nie ma jej tam jeszcze.

Podczas wysyłania e-maila do zresetowania hasła lub e-maila weryfikacyjnego należy podać instancję FIRActionCodeSettings. Ten interfejs przyjmuje te parametry:

Swift

Parametr Typ Opis
URL Ciąg znaków

Ustawia link (URL stanu lub kontynuacji), który ma różne znaczenia w zależności od kontekstu:

  • Gdy link jest obsługiwany w widżetach działań w przeglądarce, jest to precyzyjny link w parametrze zapytania continueUrl.
  • Gdy link jest obsługiwany bezpośrednio w aplikacji, jest to parametr zapytania continueUrl w precyzyjnym linku Hosting.
iOSBundleID Ciąg znaków Ustawia identyfikator pakietu iOS, aby pomóc Firebase Authentication określić, czy ma utworzyć link tylko do wersji internetowej czy do wersji mobilnej, który będzie otwierany na urządzeniu Apple.
androidPackageName Ciąg znaków Ustawia nazwę pakietu Androida, aby pomóc aplikacji Firebase Authentication określić, czy ma utworzyć link tylko do wersji internetowej czy do wersji mobilnej, który będzie otwierany na urządzeniu z Androidem.
handleCodeInApp Wartość logiczna Określ, czy link do działania w e-mailu ma się najpierw otworzyć w aplikacji mobilnej, czy w przeglądarce. Wartość domyślna to fałsz. Jeśli ta opcja ma wartość Prawda, link do kodu działania będzie wysyłany jako uniwersalny link lub link aplikacji na Androida i będzie otwierany przez aplikację, jeśli jest zainstalowana. W przypadku fałszywego wyniku kod zostanie wysłany najpierw do widżetu internetowego, a potem przekieruje do aplikacji, jeśli jest zainstalowana.
linkDomain Ciąg znaków Jeśli w przypadku projektu zdefiniowano niestandardowe domeny linków hostingu, określ, której z nich chcesz używać, gdy link ma być otwierany przez określoną aplikację mobilną. W przeciwnym razie domyślnie zostanie wybrana domena domyślna (np. PROJECT_ID.firebaseapp.com).
dynamicLinkDomain Ciąg znaków Rola wycofana. Nie podawaj tego parametru.

Objective-C

Parametr Typ Opis
URL NSString

Ustawia link (URL stanu lub kontynuacji), który ma różne znaczenia w zależności od kontekstu:

  • Gdy link jest obsługiwany w widżetach działań w przeglądarce, jest to precyzyjny link w parametrze zapytania continueUrl.
  • Gdy link jest obsługiwany bezpośrednio w aplikacji, jest to parametr zapytania continueUrl w precyzyjnym linku Hosting.
iOSBundleID NSString Ustawia identyfikator pakietu iOS, aby pomóc Firebase Authentication określić, czy ma utworzyć link tylko do wersji internetowej czy do wersji mobilnej, który będzie otwierany na urządzeniu z Androidem lub Apple.
androidPackageName NSString Ustawia nazwę pakietu Androida, aby pomóc Firebase Authentication określić, czy ma utworzyć link tylko do strony internetowej czy do aplikacji mobilnej, który będzie otwierany na urządzeniu z Androidem lub Apple.
handleCodeInApp BOOL Określ, czy link do działania w e-mailu ma się najpierw otworzyć w aplikacji mobilnej, czy w przeglądarce. Wartość domyślna to fałsz. Jeśli ta opcja ma wartość Prawda, link do kodu działania będzie wysyłany jako uniwersalny link lub link aplikacji na Androida i będzie otwierany przez aplikację, jeśli jest zainstalowana. W przypadku fałszywego wyniku kod zostanie wysłany najpierw do widżetu internetowego, a potem przekieruje do aplikacji, jeśli jest zainstalowana.
linkDomain NSString Jeśli w przypadku projektu zdefiniowano niestandardowe Hostingdomeny linków, określ, której z nich chcesz używać, gdy link ma być otwierany przez określoną aplikację mobilną. W przeciwnym razie domyślnie zostanie wybrana domena domyślna (np. PROJECT_ID.firebaseapp.com).
dynamicLinkDomain NSString Rola wycofana. Nie podawaj tego parametru.

Ten przykład pokazuje, jak wysłać link weryfikacyjny e-mailem, który najpierw otworzy się w aplikacji mobilnej za pomocą niestandardowej domeny linków Hostingcustom-domain.com. Precyzyjny link będzie zawierać treść adresu URL do kontynuowania. https://www.example.com/?email=user@example.com

Swift

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")
// Specify a custom Hosting link domain to use. The domain must be
// configured in Firebase Hosting and owned by the project.
actionCodeSettings.linkDomain = "custom-domain.com"
user.sendEmailVerification(withActionCodeSettings:actionCodeSettings { error in
  if error {
    // Error occurred. Inspect error.code and handle error.
    return
  }
  // Email verification sent.
})

Objective-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;
// Specify a custom Hosting link domain to use. The domain must be
// configured in Firebase Hosting and owned by the project.
 actionCodeSettings.linkDomain = @"custom-domain.com";
 [actionCodeSettings setAndroidPackageName:@"com.example.android"];
 [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings
                                        completion:^(NSError *_Nullable error) {
   if (error) {
     // Error occurred. Inspect error.code and handle error.
     return;
   }
   // Email verification sent.
 }];

Firebase Authentication używa Firebase Hosting podczas wysyłania linku, który ma być otwarty w aplikacji mobilnej. Aby korzystać z tej funkcji, musisz skonfigurować w konsoli Firebase linki Hosting.

  1. Konfigurowanie aplikacji Apple:

    1. Jeśli planujesz obsługiwać te linki w aplikacji, musisz skonfigurować domenę linku Hosting jako powiązaną domenę w możliwościach aplikacji.
    2. Więcej informacji znajdziesz w artykule Instrukcje otrzymywania linków do hostowania na iOS.
  2. Konfigurowanie aplikacji na Androida:

    1. Jeśli planujesz obsługiwać te linki z aplikacji na Androida, musisz podać nazwę pakietu aplikacji w ustawieniach projektu w konsoli Firebase. Dodatkowo należy podać odciski cyfrowe SHA-1 i SHA-256 certyfikatu aplikacji.
    2. Musisz też skonfigurować filtr intencji dla precyzyjnego linku w pliku AndroidManifest.xml.
    3. Więcej informacji znajdziesz w artykule Otrzymywanie linków do hostowania Androida.

Obsługa działań związanych z e-mailami w aplikacji internetowej

Możesz określić, czy chcesz najpierw obsłużyć link z kodem działania z aplikacji internetowej, a potem przekierować użytkownika na inną stronę internetową lub aplikację mobilną (o ile jest ona dostępna) po pomyślnym zakończeniu działania. Aby to zrobić, ustaw wartość handleCodeInApp na false w obiekcie FIRActionCodeSettings (Obj-C) lub ActionCodeSettings (Swift). Identyfikator pakietu ani nazwa pakietu na Androida nie są wymagane, ale ich podanie pozwoli użytkownikowi wrócić do określonej aplikacji po wykonaniu kodu działania e-maila.

Adres URL witryny użyty tutaj to adres skonfigurowany w sekcji Szablony działań e-mail. Domyślny jest udostępniany we wszystkich projektach. Więcej informacji o dostosowywaniu elementu przetwarzającego działanie e-maila znajdziesz w artykule [GA4] Dostosowywanie elementów przetwarzających działanie e-maila.

W tym przypadku link w parametrze zapytania continueURL będzie linkiem Hosting, którego ładunek to URL określony w obiekcie ActionCodeSettings.

Podczas obsługi działań związanych z e-mailem, takich jak weryfikacja adresu e-mail, kod działania z parametru zapytania oobCode musi zostać przeanalizowany z precyzyjnego linku, a następnie zastosowany za pomocą parametru applyActionCode, aby zmiana mogła zacząć obowiązywać, czyli aby adres e-mail został zweryfikowany.

Obsługa działań związanych z e-mailami w aplikacji mobilnej

Możesz określić, czy najpierw chcesz obsłużyć link do kodu działania w aplikacji mobilnej (o ile jest zainstalowana). Jeśli link zostanie kliknięty na urządzeniu, które nie obsługuje aplikacji mobilnej, zostanie otwarty w przeglądarce. Aby to zrobić, ustaw wartość handleCodeInApp na true w obiekcie FIRActionCodeSettings (Obj-C) lub ActionCodeSettings (Swift). Musisz też podać nazwę pakietu na Androida lub identyfikator pakietu aplikacji mobilnej. W przypadku braku aplikacji mobilnej używany jest tutaj domyślny adres URL witryny, który został skonfigurowany w sekcji Szablony działań e-mailowych. Domyślny jest udostępniany we wszystkich projektach. Więcej informacji o dostosowywaniu elementu przetwarzającego działanie e-maila znajdziesz w artykule [GA4] Dostosowywanie elementów przetwarzających działanie e-maila.

W takim przypadku link do aplikacji mobilnej wysłany do użytkownika będzie linkiem Hosting, którego ładunek to adres URL kodu działania skonfigurowany w Konsoli z parametrami zapytania oobCode, mode, apiKeycontinueUrl. Drugi z nich będzie odpowiadał oryginalnej wartości URL określonej w obiekcie FIRActionCodeSettings (Obj-C) lub ActionCodeSettings (Swift). Kod działania można zastosować bezpośrednio z aplikacji mobilnej w sposób podobny do tego, w jaki jest on obsługiwany w ramach procesu internetowego opisanego w sekcji dostosowywanie elementów obsługi e-maili.

Podczas obsługi działań związanych z e-mailem, takich jak weryfikacja adresu e-mail, kod działania z parametru zapytania oobCode musi zostać przeanalizowany z precyzyjnego linku, a następnie zastosowany za pomocą parametru applyActionCode, aby zmiana mogła zacząć obowiązywać, czyli aby adres e-mail został zweryfikowany.