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ą 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 przez aplikację mobilną (jeśli jest zainstalowana), czy przez stronę internetową.
Może to być bardzo przydatne w tych typowych sytuacjach:
Użytkownik, który nie jest zalogowany, może próbować uzyskać dostęp do treści wymagających zalogowania. Może jednak zapomnieć hasła i dlatego uruchomić proces resetowania hasła. Na końcu tego 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 powrotu do aplikacji, aby dokończyć subskrypcję.
Gdy użytkownik rozpoczyna proces resetowania hasła lub potwierdzania adresu e-mail w aplikacji Apple, oczekuje, że zakończy go w 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 Auth i która może znacznie poprawić wrażenia użytkownika.
Przekazywanie stanu lub adresu URL dalszego działania w działaniach e-mailowych
Aby bezpiecznie przekazać adres URL dalszego działania, musisz dodać domenę tego adresu URL jako autoryzowaną domenę:
W konsoli Firebase otwórz kartę Bezpieczeństwo > Uwierzytelnianie > Ustawienia.
W sekcji Autoryzowane domeny kliknij Dodaj domenę i dodaj adres URL.
Podczas wysyłania e-maila z resetowaniem hasła lub e-maila weryfikacyjnego musisz podać instancję ActionCodeSettings. Ten interfejs przyjmuje te parametry:
| Parametr | Typ | Opis | |||
|---|---|---|---|---|---|
url |
Ciąg znaków | Ustawia link (stan lub adres URL dalszego działania), który ma różne znaczenia w różnych kontekstach:
|
|||
iOSBundleId |
Ciąg znaków | Ustawia identyfikator pakietu. Jeśli aplikacja Apple jest zainstalowana, link zostanie otwarty w niej. Aplikacja musi być zarejestrowana w Konsoli. Jeśli nie podasz identyfikatora pakietu, wartość tego pola zostanie ustawiona na identyfikator pakietu głównego pakietu aplikacji. | |||
androidPackageName |
Ciąg znaków | Ustawia nazwę pakietu na Androida. Jeśli aplikacja na Androida jest zainstalowana, link zostanie otwarty w niej. | |||
androidInstallApp |
Wartość logiczna | Określa, czy aplikacja na Androida ma zostać zainstalowana, jeśli urządzenie ją obsługuje i nie jest jeszcze zainstalowana. Jeśli to pole zostanie podane bez nazwy pakietu, pojawi się błąd informujący, że nazwa pakietu musi być podana razem z tym polem. | |||
androidMinimumVersion |
Ciąg znaków | Minimalna wersja aplikacji obsługiwana w tym procesie. Jeśli minimalVersion jest określone, a zainstalowana jest starsza wersja aplikacji, użytkownik zostanie przekierowany do Sklepu Play w celu aktualizacji aplikacji. Aplikacja na Androida musi być zarejestrowana w Konsoli. | |||
handleCodeInApp |
Wartość logiczna | Określa, czy link do działania w e-mailu ma być otwierany najpierw w aplikacji mobilnej czy w linku internetowym. Domyślnie jest to wartość false. Jeśli ustawisz 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. Jeśli ustawisz wartość false, kod zostanie najpierzy wysłany do widżetu internetowego, a potem po kliknięciu „Dalej” nastąpi przekierowanie do aplikacji, jeśli jest zainstalowana. | |||
dynamicLinkDomain |
Ciąg znaków | (Wycofane, 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 projekcie można skonfigurować wiele domen linków dynamicznych, więc to pole umożliwia wybranie jednej z nich. Jeśli nie podasz żadnej domeny, domyślnie zostanie użyta pierwsza domena. | linkDomain |
Ciąg znaków | Opcjonalna niestandardowa domena Hostingu Firebase, która ma być używana, gdy link ma być otwierany za pomocą 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`). Zastępuje ona wycofane ustawienie `dynamicLinkDomain`. |
Ten przykład pokazuje, jak wysłać link weryfikacyjny, który zostanie otwarty najpierw w aplikacji mobilnej jako link dynamiczny Firebase z niestandardową domeną linku dynamicznego example.page.link (aplikacja na iOS com.example.ios lub aplikacja na Androida com.example.android, która 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);
Konfigurowanie linków dynamicznych Firebase
Usługa 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.
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ę linków dynamicznych, zanotuj ją. Domena linków dynamicznych zwykle wygląda tak jak w tym przykładzie:
example.page.link
Ta wartość będzie potrzebna podczas konfigurowania aplikacji Apple lub aplikacji na Androida, aby przechwytywała przychodzący link.
Konfigurowanie aplikacji na Androida:
- Jeśli planujesz obsługiwać te linki w aplikacji na Androida, musisz podać nazwę pakietu na Androida w ustawieniach projektu w konsoli Firebase. Dodatkowo musisz 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. Dodatkowo musisz podać identyfikator App Store i identyfikator zespołu deweloperów Apple.
- Musisz też skonfigurować domenę linku uniwersalnego FDL jako powiązaną domenę w możliwościach aplikacji.
- Jeśli planujesz dystrybuować 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 odbierania linków dynamicznych na platformach Apple .
Obsługa działań e-mailowych w aplikacji internetowej
Możesz określić, czy link do kodu działania ma być obsługiwany najpierw przez aplikację internetową, a potem po pomyślnym zakończeniu działania ma nastąpić przekierowanie do innej strony internetowej lub aplikacji mobilnej (jeśli jest dostępna).
Aby to zrobić, 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 przekierowanie z powrotem do określonej aplikacji po zakończeniu działania e-mailowego.
Używany tutaj adres URL jest skonfigurowany w sekcji szablonów działań e-mailowych. Dla wszystkich projektów jest udostępniany domyślny adres URL. Więcej informacji o dostosowywaniu obsługi działań e-mailowych znajdziesz w artykule Dostosowywanie obsługi e-maili.
W tym przypadku link w parametrze zapytania continueURL będzie
linkiem FDL, którego ładunkiem jest URL określony w obiekcie ActionCodeSettings. Możesz przechwytywać i obsługiwać przychodzący link w aplikacji bez dodatkowych zależności, ale zalecamy używanie biblioteki klienta FDL do analizowania precyzyjnego linku.
Podczas obsługi działań e-mailowych, 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ą funkcji applyActionCode, aby zmiana została wprowadzona (czyli adres e-mail został zweryfikowany).
Obsługa działań e-mailowych w aplikacji mobilnej
Możesz określić, czy link do kodu działania ma być obsługiwany najpierw przez aplikację mobilną (jeśli jest 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, zostanie otwarty na stronie internetowej.
Aby to zrobić, ustaw wartość handleCodeInApp na true w obiekcie ActionCodeSettings. Musisz też podać nazwę pakietu na Androida lub identyfikator pakietu aplikacji mobilnej.Używany tutaj rezerwowy adres URL, gdy aplikacja mobilna jest niedostępna, jest skonfigurowany w sekcji szablonów działań e-mailowych. Dla wszystkich projektów jest udostępniany domyślny adres URL. Więcej informacji o dostosowywaniu obsługi działań e-mailowych znajdziesz w artykule
Dostosowywanie obsługi e-maili.
W tym przypadku link do aplikacji mobilnej wysłany do użytkownika będzie linkiem FDL, którego ładunkiem jest adres URL kodu działania skonfigurowany w Konsoli z parametrami zapytania oobCode, mode, apiKey i continueUrl. Ten ostatni będzie oryginalnym adresem URL określonym w obiekcie ActionCodeSettings. Możesz przechwytywać i obsługiwać przychodzący link w 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 procesu internetowego opisanego w
sekcji
Dostosowywanie obsługi e-maili.
Podczas obsługi działań e-mailowych, 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ą funkcji applyActionCode, aby zmiana została wprowadzona (czyli adres e-mail został zweryfikowany).