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 w stronie 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 zapisaniem się na newsletter. Użytkownik przechodzi proces weryfikacji e-maila i oczekuje, że po zakończeniu subskrypcji wróci do aplikacji.

  • 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 kontynuowania.

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

Przekazywanie stanu lub adresu URL kontynuacji w działaniach e-mail

Aby bezpiecznie przekazywać adres URL dalszego działania, musisz dodać do listy dozwolonych domenę, do której należy ten adres. 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ę ActionCodeSettings. Ten interfejs przyjmuje te parametry:

Parametr Typ Opis
url Ciąg znaków

Ustawia link (adres 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 Dynamic Link.
iOSBundleId Ciąg znaków Ustawia identyfikator pakietu. Spowoduje to próbę otwarcia linku w aplikacji Apple, jeśli jest ona zainstalowana. Aplikacja musi być zarejestrowana w Konsoli. Jeśli nie podasz identyfikatora grupy, wartość tego pola zostanie ustawiona na identyfikator grupy głównej aplikacji.
androidPackageName Ciąg znaków Ustawia nazwę pakietu na Androida. Jeśli aplikacja jest zainstalowana, spróbuje otworzyć link w aplikacji na Androida.
androidInstallApp bool Określa, czy zainstalować aplikację na Androida, jeśli urządzenie ją obsługuje i nie jest jeszcze zainstalowana. Jeśli to pole zostanie podane bez packageName, zostanie wyświetlony błąd z informacją, że packageName musi być podany w połączeniu z tym polem.
androidMinimumVersion Ciąg znaków Minimalna wersja aplikacji obsługiwana w ramach tego procesu. Jeśli parametr minimumVersion jest określony, a zainstalowana jest starsza wersja aplikacji, użytkownik zostanie przekierowany do Sklepu Play, aby zaktualizować aplikację. Aplikacja na Androida musi być zarejestrowana w Konsoli.
handleCodeInApp bool Określa, 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 kodu działania będzie wysyłany jako link uniwersalny lub link aplikacji na Androida i będzie otwierany przez aplikację, jeśli jest zainstalowana. W przypadku fałszywego wyniku kod zostanie najpierw wysłany do widżetu internetowego, a potem przekieruje do aplikacji, jeśli jest zainstalowana.
dynamicLinkDomain Ciąg znaków (Wycofane, użyj opcji „linkDomain”) Ustawia domenę linku dynamicznego (lub subdomenę), która ma być używana dla bieżącego linku, jeśli ma być otwierany za pomocą linków dynamicznych Firebase. W ramach projektu można skonfigurować wiele dynamicznych domen linków, dlatego to pole umożliwia wybranie jednej z nich. Jeśli nie podasz żadnej domeny, domyślnie będzie używana pierwsza domena. linkDomain Ciąg znaków Opcjonalna niestandardowa domena Hostingu Firebase, której należy użyć, gdy link ma być otwierany w określonej aplikacji mobilnej. Domena musi być skonfigurowana w Hostingu Firebase i należeć do projektu. Nie może to być domyślna domena hostingu (``web.app`` lub ``firebaseapp.com``). To ustawienie zastępuje przestarzałe ustawienie ``dynamicLinkDomain``.

Ten przykład pokazuje, jak wysłać link weryfikacyjny e-mailem, 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 na Androida com.example.android, która zostanie zainstalowana, jeśli nie jest jeszcze zainstalowana, a jej wersja minimalna to 12). Link głęboki będzie zawierać treść ładunku adresu URL kontynuacji https://www.example.com/?email=user@example.com.

final user = FirebaseAuth.instance.currentUser;

final actionCodeSettings = ActionCodeSettings(
  url: "http://www.example.com/verify?email=${user?.email}",
  iOSBundleId: "com.example.ios",
  androidPackageName: "com.example.android",
);

await user?.sendEmailVerification(actionCodeSettings);

Firebase Auth używa linków dynamicznych Firebase podczas wysyłania linku, który ma być otwierany w aplikacji mobilnej. Aby korzystać z tej funkcji, musisz skonfigurować linki dynamiczne w konsoli Firebase.

  1. Włączanie Linków dynamicznych Firebase:

    1. W konsoli Firebase otwórz sekcję Linki dynamiczne.

    2. Jeśli nie zaakceptowałeś(-aś) jeszcze warunków korzystania z linków dynamicznych i nie utworzyłeś(-aś) domeny linków dynamicznych, zrób to teraz.

    3. Jeśli masz już utworzoną domenę Dynamic Links, zanotuj ją. Domena Dynamic Links wygląda zwykle tak:

      example.page.link

    4. Będzie ona potrzebna do skonfigurowania aplikacji na urządzenia z systemem Android lub Apple w celu przechwytywania przychodzącego połączenia.

  2. Konfigurowanie aplikacji na Androida:

    1. Jeśli planujesz obsługiwać te linki w aplikacji na Androida, musisz podać nazwę pakietu Androida w ustawieniach projektu w Konsoli Firebase. Dodatkowo musisz przesłać 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 Instrukcje otrzymywania linków dynamicznych na Androida.
  3. Konfigurowanie aplikacji Apple:

    1. Jeśli planujesz obsługiwać te linki w aplikacji, musisz podać identyfikator pakietu w ustawieniach projektu w Konsoli Firebase. Dodatkowo musisz podać identyfikator App Store i identyfikator zespołu deweloperów Apple.
    2. Musisz też skonfigurować domenę uniwersalnego linku FDL jako domenę powiązaną w możliwościach aplikacji.
    3. Jeśli planujesz rozpowszechniać aplikację na iOS w wersji 8 lub starszej, musisz ustawić identyfikator pakietu jako schemat niestandardowy dla przychodzących adresów URL.
    4. Więcej informacji znajdziesz w instrukcjach odbierania linków dynamicznych na platformach Apple.

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 ActionCodeSettings. Identyfikator pakietu lub 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 sterującego e-maila znajdziesz w artykule [GA4] Dostosowywanie elementów sterujących e-maila.

W tym przypadku link w parametrze zapytania continueURL będzie linkiem FDL, którego ładunek to URL określony w obiekcie ActionCodeSettings. Możesz przechwycić i obsługiwać przychodzący link z aplikacji bez dodatkowych zależności, ale zalecamy użycie biblioteki klienta FDL, aby przeanalizować precyzyjny link.

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ą 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). W przypadku aplikacji na Androida możesz też użyć elementu androidInstallApp, aby określić, że aplikacja ma być 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 otwarty na stronie internetowej. Aby to zrobić, ustaw wartość handleCodeInApp na true w obiekcie ActionCodeSettings. Musisz też podać nazwę pakietu lub identyfikator pakietu aplikacji mobilnej na Androida.Gdy nie ma dostępnej aplikacji mobilnej, używany jest tutaj adres URL internetowy domyślny skonfigurowany w sekcji szablonów działań e-mail. Domyślny jest udostępniany we wszystkich projektach. Więcej informacji o dostosowywaniu elementu sterującego e-maila znajdziesz w artykule [GA4] Dostosowywanie elementów sterujących e-maila.

W tym przypadku link do aplikacji mobilnej wysłany do użytkownika będzie linkiem FDL, którego ładunek to adres URL kodu działania skonfigurowany w Konsoli z parametrami zapytania oobCode, mode, apiKeycontinueUrl. Druga wartość to oryginalna wartość URL określona w obiekcie ActionCodeSettings. Możesz przechwytywać i obsługiwać przychodzące linki z aplikacji bez dodatkowych zależności, ale zalecamy użycie biblioteki klienta FDL, aby przeanalizować precyzyjny link. Kod działania można zastosować bezpośrednio w aplikacji mobilnej w sposób podobny do obsługi kodu w przepływie internetowym opisanym w sekcji dostosowywanie elementów obsługujących e-maile.

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ą applyActionCode, aby zmiana mogła zacząć obowiązywać, czyli aby adres e-mail został zweryfikowany.