Stan zaliczenia w działaniach e-maili

Podczas wysyłania e-maili z działaniami związanymi z resetowaniem hasła lub weryfikacją adresu e-mail użytkownika możesz przekazywać stan za pomocą adresu URL dalszego działania. 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 z aplikacji mobilnej, gdy jest ona zainstalowana, zamiast ze 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 mógł jednak zapomnieć hasła i w związku z tym uruchomić proces resetowania hasła. Na końcu procesu użytkownik oczekuje powrotu 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 do obsługi newslettera może wymagać od użytkownika potwierdzenia adresu e-mail przed subskrypcją. Użytkownik przejdzie proces potwierdzania adresu e-mail i oczekuje, że po jego zakończeniu wróci do aplikacji, aby dokończyć subskrypcję.

  • Gdy użytkownik rozpoczyna proces resetowania hasła lub potwierdzania adresu e-mail w aplikacji na urządzenia Apple, oczekuje, że zakończy go w tej aplikacji. Możliwość przekazywania stanu za pomocą adresu URL dalszego działania umożliwia to.

Możliwość przekazywania stanu za pomocą adresu URL dalszego działania to zaawansowana funkcja, którą udostępnia Firebase Auth i która może znacznie poprawić wrażenia użytkowników.

Przekazywanie stanu adresu URL dalszego działania w działaniach związanych z e-mailem

Aby bezpiecznie przekazać URL dalszego działania, musisz dodać domenę adresu URL jako autoryzowaną:

  1. W konsoli Firebase otwórz Zabezpieczenia > Uwierzytelnianie > karta Ustawienia.

  2. W sekcji Autoryzowane domeny kliknij Dodaj domenę i dodaj adres URL.

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 (adres URL stanu/URL dalszego działania), który ma różne znaczenia w zależności od kontekstu:

  • Gdy link jest obsługiwany w widżetach działania w internecie, 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 należy utworzyć link tylko do internetu czy link mobilny, który zostanie otwarty na urządzeniu Apple.
androidPackageName Ciąg znaków Ustawia nazwę pakietu Androida, aby pomóc usłudze Firebase Authentication określić, czy ma utworzyć link tylko do internetu czy link mobilny, który zostanie otwarty na urządzeniu z Androidem.
handleCodeInApp Wartość logiczna Określa, czy link do działania w e-mailu zostanie najpierw otwarty w aplikacji mobilnej czy w internecie. Wartość domyślna to false. Jeśli ma wartość „true”, link do kodu działania zostanie wysłany jako link uniwersalny lub link aplikacji na Androida i zostanie otwarty przez aplikację, jeśli jest zainstalowana. W przypadku wartości fałszywej kod zostanie najpierw wysłany do widżetu internetowego, a następnie po kliknięciu przycisku kontynuacji nastąpi przekierowanie do aplikacji, jeśli jest ona zainstalowana.
linkDomain Ciąg znaków Jeśli dla projektu zdefiniowano niestandardowe domeny linków do hostingu, określ, której z nich chcesz używać, gdy link ma być otwierany przez wybraną aplikację mobilną. W przeciwnym razie automatycznie wybierana jest 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 (adres URL stanu/URL dalszego działania), który ma różne znaczenia w zależności od kontekstu:

  • Gdy link jest obsługiwany w widżetach działania w internecie, 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 należy utworzyć link tylko do internetu czy link mobilny, który będzie otwierany na urządzeniu z Androidem lub Apple.
androidPackageName NSString Ustawia nazwę pakietu Android, aby pomóc Firebase Authentication określić, czy należy utworzyć link tylko do internetu czy link mobilny, który będzie otwierany na urządzeniu z Androidem lub Apple.
handleCodeInApp BOOL Określa, czy link do działania w e-mailu zostanie najpierw otwarty w aplikacji mobilnej czy w internecie. Wartość domyślna to false. Jeśli ma wartość „true”, link do kodu działania zostanie wysłany jako link uniwersalny lub link aplikacji na Androida i zostanie otwarty przez aplikację, jeśli jest zainstalowana. W przypadku wartości fałszywej kod zostanie najpierw wysłany do widżetu internetowego, a następnie po kliknięciu przycisku kontynuacji nastąpi przekierowanie do aplikacji, jeśli jest ona zainstalowana.
linkDomain NSString Jeśli dla projektu zdefiniowano niestandardowe domeny linków Hosting, określ, której z nich chcesz używać, gdy link ma być otwierany przez określoną aplikację mobilną. W przeciwnym razie automatycznie wybierana jest domyślna domena (np. PROJECT_ID.firebaseapp.com).
dynamicLinkDomain NSString Rola wycofana. Nie podawaj tego parametru.

Poniższy przykład pokazuje, jak wysłać link weryfikacyjny, który najpierw otworzy się w aplikacji mobilnej, korzystając z niestandardowej Hostingdomeny linkucustom-domain.com. Precyzyjny link będzie zawierać ładunek adresu URL dalszego działania 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ć otwierany w aplikacji mobilnej. Aby korzystać z tej funkcji, musisz skonfigurować linki Hosting w konsoli Firebase.

  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 instrukcjach dotyczących otrzymywania linków do hostingu w iOS.
  2. Konfigurowanie aplikacji na Androida:

    1. Jeśli zamierzasz obsługiwać te linki w aplikacji na Androida, musisz podać nazwę pakietu aplikacji w ustawieniach projektu w konsoli Firebase. Dodatkowo należy podać 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 instrukcjach dotyczących otrzymywania linków do hostingu Androida.

Obsługa działań w e-mailach w aplikacji internetowej

Możesz określić, czy chcesz najpierw obsłużyć link do kodu działania z aplikacji internetowej, a następnie przekierować użytkownika na inną stronę internetową lub do aplikacji mobilnej po pomyślnym zakończeniu procesu, pod warunkiem że aplikacja mobilna jest dostępna. Aby to zrobić, ustaw wartość handleCodeInApp na false w obiekcie FIRActionCodeSettings (Obj-C) lub ActionCodeSettings (Swift). Identyfikator pakietu lub nazwa pakietu na Androida nie są wymagane, ale ich podanie umożliwi użytkownikowi powrót do określonej aplikacji po wykonaniu działania w kodzie e-maila.

Użyty tutaj adres URL to adres skonfigurowany w sekcji szablonów działań związanych z e-mailami. Domyślna pula jest udostępniana wszystkim projektom. Więcej informacji o dostosowywaniu modułu obsługi działania e-mail znajdziesz w artykule Dostosowywanie modułów obsługi e-maili.

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 potwierdzanie adresu e-mail, kod działania z parametru zapytania oobCode musi zostać przeanalizowany z precyzyjnego linku, a następnie zastosowany za pomocą applyActionCode, aby zmiana weszła w życie, np. aby adres e-mail został zweryfikowany.

Obsługa działań dotyczących e-maili w aplikacji mobilnej

Możesz określić, czy chcesz najpierw obsługiwać link do kodu działania w aplikacji mobilnej, pod warunkiem że jest ona zainstalowana. Jeśli link zostanie kliknięty na urządzeniu, które nie obsługuje aplikacji mobilnej, otworzy się strona internetowa. 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. Zastępczy adres URL używany w przypadku braku aplikacji mobilnej jest skonfigurowany w sekcji szablonów działań e-mail. Dla wszystkich projektów jest udostępniana domyślna pula. Więcej informacji o dostosowywaniu modułu obsługi działania e-mail znajdziesz w artykule Dostosowywanie modułów obsługi e-maili.

W tym przypadku link do aplikacji mobilnej wysłany do użytkownika będzie linkiem Hosting, którego ładunkiem jest adres URL kodu działania skonfigurowany w Konsoli z parametrami zapytania oobCode, mode, apiKeycontinueUrl. Ten ostatni będzie oryginalnym parametrem URL określonym w obiekcie FIRActionCodeSettings (Obj-C) lub ActionCodeSettings (Swift). Kod działania można zastosować bezpośrednio z aplikacji mobilnej, podobnie jak w przypadku przepływu internetowego opisanego w sekcji Dostosowywanie modułów obsługi e-maili.

Podczas obsługi działań związanych z e-mailem, takich jak potwierdzanie adresu e-mail, kod działania z parametru zapytania oobCode musi zostać przeanalizowany z precyzyjnego linku, a następnie zastosowany za pomocą applyActionCode, aby zmiana weszła w życie, np. aby adres e-mail został zweryfikowany.