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 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 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 subskrypcją. Użytkownik przechodzi proces weryfikacji e-maila i oczekuje, że po zakończeniu procesu wróci do aplikacji, aby dokończyć subskrypcję.
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 kontynuacji.
Możliwość przekazywania stanu za pomocą adresu URL kontynuacji to potężna funkcja, którą zapewnia Firebase Auth i która może znacznie poprawić wrażenia użytkownika.
Przekazywanie stanu adresu URL dalszego działania w działaniach e-mail
Aby bezpiecznie przekazywać adres URL dalszego działania, musisz dodać domenę tego adresu do białej listy w konsoli Firebase. 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ę FIRActionCodeSettings
. Ten interfejs przyjmuje te parametry:
Swift
Parametr | Typ | Opis |
---|---|---|
URL |
Ciąg znaków | Ustawia link (URL stanu lub kontynuacji), który ma różne znaczenia w zależności od kontekstu:
|
iOSBundleID |
Ciąg znaków | Ustawia identyfikator pakietu iOS, aby pomóc Firebase Authentication określić, czy ma utworzyć link tylko do wersji internetowej czy do wersji mobilnej, który będzie otwierany na urządzeniu Apple. |
androidPackageName |
Ciąg znaków | Ustawia nazwę pakietu Androida, aby pomóc aplikacji Firebase Authentication określić, czy ma utworzyć link tylko do wersji internetowej czy do wersji mobilnej, który będzie otwierany na urządzeniu z Androidem. |
handleCodeInApp |
Wartość logiczna | Określ, 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 do kodu działania będzie wysyłany jako uniwersalny link lub link aplikacji na Androida i będzie otwierany przez aplikację, jeśli jest zainstalowana. W przypadku fałszywego wyniku kod zostanie wysłany najpierw do widżetu internetowego, a potem przekieruje do aplikacji, jeśli jest zainstalowana. |
linkDomain |
Ciąg znaków | Jeśli w przypadku projektu zdefiniowano niestandardowe domeny linków hostingu, określ, której z nich chcesz używać, gdy link ma być otwierany przez określoną aplikację mobilną. W przeciwnym razie domyślnie zostanie wybrana 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 (URL stanu lub kontynuacji), który ma różne znaczenia w zależności od kontekstu:
|
iOSBundleID |
NSString | Ustawia identyfikator pakietu iOS, aby pomóc Firebase Authentication określić, czy ma utworzyć link tylko do wersji internetowej czy do wersji mobilnej, który będzie otwierany na urządzeniu z Androidem lub Apple. |
androidPackageName |
NSString | Ustawia nazwę pakietu Androida, aby pomóc Firebase Authentication określić, czy ma utworzyć link tylko do strony internetowej czy do aplikacji mobilnej, który będzie otwierany na urządzeniu z Androidem lub Apple. |
handleCodeInApp |
BOOL | Określ, 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 do kodu działania będzie wysyłany jako uniwersalny link lub link aplikacji na Androida i będzie otwierany przez aplikację, jeśli jest zainstalowana. W przypadku fałszywego wyniku kod zostanie wysłany najpierw do widżetu internetowego, a potem przekieruje do aplikacji, jeśli jest zainstalowana. |
linkDomain |
NSString | Jeśli w przypadku projektu zdefiniowano niestandardowe Hostingdomeny linków, określ, której z nich chcesz używać, gdy link ma być otwierany przez określoną aplikację mobilną. W przeciwnym razie domyślnie zostanie wybrana domena domyślna (np. PROJECT_ID.firebaseapp.com |
dynamicLinkDomain |
NSString | Rola wycofana. Nie podawaj tego parametru. |
Ten przykład pokazuje, jak wysłać link weryfikacyjny e-mailem, który najpierw otworzy się w aplikacji mobilnej za pomocą niestandardowej domeny linków Hostingcustom-domain.com
. Precyzyjny link będzie zawierać treść adresu URL do kontynuowania.
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. }];
Konfigurowanie linków Firebase Hosting
Firebase Authentication używa Firebase Hosting podczas wysyłania linku, który ma być otwarty w aplikacji mobilnej. Aby korzystać z tej funkcji, musisz skonfigurować w konsoli Firebase linki Hosting.
Konfigurowanie aplikacji Apple:
- Jeśli planujesz obsługiwać te linki w aplikacji, musisz skonfigurować domenę linku Hosting jako powiązaną domenę w możliwościach aplikacji.
- Więcej informacji znajdziesz w artykule Instrukcje otrzymywania linków do hostowania na iOS.
Konfigurowanie aplikacji na Androida:
- Jeśli planujesz obsługiwać te linki z aplikacji na Androida, musisz podać nazwę pakietu aplikacji w ustawieniach projektu w konsoli Firebase. Dodatkowo należy podać odciski cyfrowe SHA-1 i SHA-256 certyfikatu aplikacji.
- Musisz też skonfigurować filtr intencji dla precyzyjnego linku w pliku
AndroidManifest.xml
. - Więcej informacji znajdziesz w artykule Otrzymywanie linków do hostowania Androida.
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 FIRActionCodeSettings
(Obj-C) lub ActionCodeSettings
(Swift). Identyfikator pakietu ani 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 przetwarzającego działanie e-maila znajdziesz w artykule [GA4] Dostosowywanie elementów przetwarzających działanie e-maila.
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 weryfikacja adresu e-mail, kod działania z parametru zapytania oobCode
musi zostać przeanalizowany z precyzyjnego linku, a następnie zastosowany za pomocą parametru 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). Jeśli link zostanie kliknięty na urządzeniu, które nie obsługuje aplikacji mobilnej, zostanie otwarty w przeglądarce. 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. W przypadku braku aplikacji mobilnej używany jest tutaj domyślny adres URL witryny, który został skonfigurowany w sekcji Szablony działań e-mailowych. Domyślny jest udostępniany we wszystkich projektach. Więcej informacji o dostosowywaniu elementu przetwarzającego działanie e-maila znajdziesz w artykule [GA4] Dostosowywanie elementów przetwarzających działanie e-maila.
W takim przypadku link do aplikacji mobilnej wysłany do użytkownika będzie linkiem Hosting, którego ładunek to adres URL kodu działania skonfigurowany w Konsoli z parametrami zapytania oobCode
, mode
, apiKey
i continueUrl
. Drugi z nich będzie odpowiadał oryginalnej wartości URL
określonej w obiekcie FIRActionCodeSettings
(Obj-C) lub ActionCodeSettings
(Swift). Kod działania można zastosować bezpośrednio z aplikacji mobilnej w sposób podobny do tego, w jaki jest on obsługiwany w ramach procesu internetowego opisanego w sekcji dostosowywanie elementów 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ą parametru applyActionCode
, aby zmiana mogła zacząć obowiązywać, czyli aby adres e-mail został zweryfikowany.