Przekazywanie stanu w działaniach e-mail

Podczas wysyłania e-maili z działaniami dotyczącymi resetowania hasła lub weryfikacji adresu e-mail użytkownika możesz przekazywać stan za pomocą URL-a 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, jeśli 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 weryfikacji 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 to umożliwia.

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

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

Aby bezpiecznie przekazać URL dalszego działania, domena tego adresu URL musi zostać dodana do listy dozwolonych w konsoli Firebase. Aby to zrobić, w sekcji Uwierzytelnianie dodaj tę domenę do listy Autoryzowane domeny na karcie Metoda logowania, jeśli jeszcze jej tam nie ma.

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 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 Dynamicznego Linku.
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 pakietu, wartość tego pola zostanie ustawiona na identyfikator pakietu głównego aplikacji.
androidPackageName Ciąg znaków Ustawia nazwę pakietu na Androida. Spowoduje to próbę otwarcia linku w aplikacji na Androida, jeśli jest ona zainstalowana.
androidInstallApp bool Określa, czy zainstalować aplikację na Androida, jeśli urządzenie ją obsługuje i nie jest ona jeszcze zainstalowana. Jeśli to pole zostanie podane bez parametru packageName, pojawi się błąd z informacją, że parametr packageName musi być podany razem z tym polem.
androidMinimumVersion Ciąg znaków Minimalna wersja aplikacji obsługiwana w tym procesie. Jeśli określono minimumVersion, a użytkownik ma zainstalowaną starszą wersję aplikacji, zostanie przekierowany do Sklepu Play, aby ją zaktualizować. Aplikacja na Androida musi być zarejestrowana w Konsoli.
handleCodeInApp bool Określa, czy link do działania w e-mailu zostanie najpierw otwarty w aplikacji mobilnej czy w internecie. Domyślnie ma wartość fałsz. 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.
dynamicLinkDomain Ciąg znaków (Wycofana, użyj `linkDomain`) Ustawia domenę (lub subdomenę) linku dynamicznego, która ma być używana w przypadku bieżącego linku, jeśli ma on być otwierany za pomocą Linków dynamicznych Firebase. W każdym projekcie można skonfigurować wiele domen dynamicznych linków, więc to pole umożliwia wybranie jednej z nich. Jeśli nie zostanie podana żadna domena, domyślnie używana jest pierwsza domena. linkDomain Ciąg znaków Opcjonalna niestandardowa domena Hostingu Firebase, która ma być używana, 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ć domena domyślna Hostingu (`web.app` lub `firebaseapp.com`). Zastępuje to wycofane ustawienie `dynamicLinkDomain`.

Poniższy przykład pokazuje, jak wysłać link weryfikacyjny, który najpierw otworzy się w aplikacji mobilnej jako dynamiczny link Firebase z użyciem niestandardowej domeny dynamicznego linku example.page.link (aplikacja na iOS com.example.ios lub aplikacja na Androida com.example.android, w której aplikacja zostanie zainstalowana, jeśli nie jest jeszcze zainstalowana, a minimalna wersja to 12). Precyzyjny link będzie zawierać ładunek adresu URL dalszego działania 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 do wysyłania linków, które mają być otwierane w aplikacji mobilnej. Aby korzystać z tej funkcji, musisz skonfigurować Linki dynamiczne w konsoli Firebase.

  1. Włącz Linki dynamiczne Firebase:

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

    2. Jeśli nie masz jeszcze zaakceptowanych warunków korzystania z linków dynamicznych i utworzonej domeny linków dynamicznych, zrób to teraz.

    3. Jeśli masz już utworzoną domenę Dynamic Links, zanotuj ją. Domena Dynamic Links zwykle wygląda tak jak w tym przykładzie:

      example.page.link

    4. Będzie on potrzebny podczas konfigurowania aplikacji na urządzenia z Androidem lub iOS, aby przechwytywała przychodzące linki.

  2. Konfigurowanie aplikacji na Androida:

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

    1. Jeśli planujesz obsługiwać te linki w aplikacji, musisz podać identyfikator pakietu w ustawieniach projektu w konsoli Firebase. Musisz też podać identyfikator App Store i identyfikator zespołu Apple Developer.
    2. Musisz też skonfigurować domenę uniwersalnego linku FDL jako domenę powiązaną w funkcjach aplikacji.
    3. Jeśli planujesz rozpowszechniać aplikację w wersjach iOS 8 i starszych, musisz ustawić identyfikator pakietu jako schemat niestandardowy dla przychodzących adresów URL.
    4. Więcej informacji znajdziesz w instrukcjach dotyczących otrzymywania linków dynamicznych na platformach Apple.

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 działania, pod warunkiem że aplikacja mobilna jest dostępna. W tym celu ustaw wartość handleCodeInApp na false w obiekcie ActionCodeSettings. 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 we wszystkich projektach. Więcej informacji o dostosowywaniu modułu obsługi działań e-mail znajdziesz w artykule Dostosowywanie modułów obsługi e-maili.

W tym przypadku link w parametrze zapytania continueURL będzie linkiem FDL, którego ładunek jest wartością URL określoną w obiekcie ActionCodeSettings. Możesz przechwytywać i obsługiwać przychodzący link z aplikacji bez żadnych dodatkowych zależności, ale zalecamy użycie biblioteki klienta FDL do przeanalizowania precyzyjnego linku.

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 została wprowadzona, np. adres e-mail został zweryfikowany.

Obsługa działań związanych z e-mailami 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. W przypadku aplikacji na Androida możesz też określić za pomocą parametru androidInstallApp, ż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, otworzy się strona internetowa. W tym celu ustaw wartość handleCodeInApp na true w obiekcie ActionCodeSettings. Należy też podać nazwę pakietu Android 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łań 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 FDL, którego ładunek to skonfigurowany w konsoli adres URL kodu działania z parametrami zapytania oobCode, mode, apiKeycontinueUrl. Będzie to pierwotna wartość URL określona w obiekcie ActionCodeSettings. Możesz przechwytywać i obsługiwać link przychodzący z aplikacji bez dodatkowych zależności, ale zalecamy używanie biblioteki klienta FDL do analizowania precyzyjnego linku. Kod działania można zastosować bezpośrednio z aplikacji mobilnej, podobnie jak w przypadku przepływu internetowego opisanego w sekcji Dostosowywanie procedur 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ą applyActionCode, aby zmiana została wprowadzona, np. adres e-mail został zweryfikowany.