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 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 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 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 weryfikacji 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 kontynuacji to umożliwia.
Możliwość przekazywania stanu za pomocą adresu URL kontynuacji to zaawansowana funkcja uwierzytelniania Firebase, która może znacznie poprawić wrażenia użytkownika.
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 kontynuacji), który ma różne znaczenia w zależności od kontekstu:
|
|||
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 packageName, pojawi się błąd z informacją, że packageName musi być podane 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. Wartość domyślna to 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 podasz żadnej domeny, 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). Link do konkretnego miejsca będzie zawierać ładunek 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);
Konfigurowanie Linków dynamicznych Firebase
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.
Włącz Linki dynamiczne Firebase:
W konsoli Firebase otwórz sekcję Linki dynamiczne.
Jeśli nie masz jeszcze zaakceptowanych warunków korzystania z linków dynamicznych i utworzonej domeny linków dynamicznych, zrób to teraz.
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
Będzie on potrzebny podczas konfigurowania aplikacji na iOS lub Androida, aby przechwytywała przychodzące linki.
Konfigurowanie aplikacji na Androida:
- 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.
- Musisz też skonfigurować filtr intencji dla precyzyjnego linku w pliku AndroidManifest.xml.
- Więcej informacji znajdziesz w instrukcjach dotyczących odbierania linków dynamicznych na Androidzie.
Konfigurowanie aplikacji Apple:
- 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.
- Musisz też skonfigurować domenę uniwersalnego linku FDL jako domenę powiązaną w funkcjach aplikacji.
- Jeśli planujesz rozpowszechniać aplikację w wersjach iOS 8 i starszych, musisz ustawić identyfikator pakietu jako schemat niestandardowy dla przychodzących adresów URL.
- Więcej informacji znajdziesz w instrukcjach dotyczących otrzymywania linków dynamicznych na platformach Apple.
Obsługa działań dotyczących e-maili 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.Adres URL internetowy 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, apiKey i continueUrl. 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.