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 w aplikacji mobilnej (jeśli jest zainstalowana), czy na stronie internetowej.
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 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 biuletyn może wymagać od użytkownika zweryfikowania adresu e-mail przed subskrypcją. Użytkownik przejdzie proces potwierdzania adresu e-mail i oczekuje powrotu do aplikacji, aby dokończyć subskrypcję.
W innych przypadkach użytkownik może rozpocząć proces na urządzeniu mobilnym i po weryfikacji oczekiwać powrotu do aplikacji mobilnej zamiast do przeglądarki.
Możliwość przekazywania stanu za pomocą adresu URL dalszego działania to zaawansowana funkcja uwierzytelniania Firebase, która może znacznie poprawić wrażenia użytkownika.
Przekazywanie stanu adresu URL dalszego działania w działaniach w e-mailu
Aby bezpiecznie przekazać 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ę firebase.auth.ActionCodeSettings. Ten interfejs przyjmuje te parametry:
| Parametr | Typ | Opis |
|---|---|---|
url |
ciąg znaków | Ustawia link (stan lub URL dalszego działania), który ma różne znaczenia w różnych kontekstach:
|
iOS |
({bundleId: string}|undefined) | Ustawia identyfikator pakietu na iOS, aby pomóc Firebase Authentication określić, czy ma utworzyć link tylko do internetu, czy link mobilny, który zostanie otwarty na urządzeniu Apple. |
android |
({packageName: string, installApp:boolean|undefined, minimumVersion: string|undefined}|undefined) | Ustawia nazwę pakietu na Androida, aby pomóc Firebase Authentication określić, czy ma utworzyć link tylko do internetu, czy link mobilny, który zostanie otwarty na urządzeniu z Androidem. |
handleCodeInApp |
(boolean|undefined) | Określa, czy link do działania w e-mailu ma być otwierany najpierw w aplikacji mobilnej, czy w linku internetowym. Wartość domyślna to fałsz (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. W przypadku wartości false kod zostanie najpierw wysłany do widżetu internetowego, a potem po kliknięciu opcji kontynuacji nastąpi przekierowanie do aplikacji, jeśli jest zainstalowana. |
linkDomain |
(string|undefined) | Jeśli dla projektu zdefiniowano niestandardowe domeny linków Hosting, określ, której z nich należy użyć, gdy link ma zostać otwarty przez określoną aplikację mobilną. W przeciwnym razie automatycznie zostanie wybrana domena domyślna (np. PROJECT_ID.firebaseapp.com |
dynamicLinkDomain |
(string|undefined) | Rola wycofana. Nie podawaj tego parametru. |
Poniższy przykład pokazuje, jak wysłać link do weryfikacji adresu e-mail, który
najpierw otworzy się w aplikacji mobilnej, używając niestandardowej domeny Hosting
custom-domain.com. Precyzyjny link będzie zawierać ładunek adresu URL dalszego działania https://www.example.com/?email=user@example.com.
const actionCodeSettings = {
url: 'https://www.example.com/?email=' + firebase.auth().currentUser.email,
iOS: {
bundleId: 'com.example.ios'
},
android: {
packageName: 'com.example.android',
},
handleCodeInApp: true,
// Specify a custom Hosting link domain to use. The domain must be
// configured in Firebase Hosting and owned by the project.
linkDomain: "custom-domain.com"
};
firebase.auth().currentUser.sendEmailVerification(actionCodeSettings)
.then(function() {
// Verification email sent.
})
.catch(function(error) {
// Error occurred. Inspect error.code.
});
Konfigurowanie linków Firebase Hosting
Firebase Authentication używa Firebase Hosting podczas wysyłania linku, który ma zostać otwarty w aplikacji mobilnej. Aby korzystać z tej funkcji, musisz skonfigurować linki hostingu w konsoli Firebase.
Konfigurowanie aplikacji na Androida:
- Jeśli planujesz obsługiwać te linki w aplikacji na Androida, musisz podać nazwę pakietu aplikacji w konsoli ustawieniach projektu.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 hostingu na Androidzie .
Konfigurowanie aplikacji na iOS:
- Jeśli planujesz obsługiwać te linki w aplikacji na iOS, będziesz musiał skonfigurować domenę linku Hosting jako domenę powiązaną w funkcjach aplikacji.
- Więcej informacji znajdziesz w instrukcjach dotyczących odbierania linków hostingu na iOS.
Obsługa działań w e-mailu w aplikacji internetowej
Możesz określić, czy chcesz najpierw obsługiwać link do kodu działania w aplikacji internetowej, a potem przekierowywać użytkownika na inną stronę internetową lub do aplikacji mobilnej po pomyślnym zakończeniu działania (jeśli aplikacja mobilna jest dostępna).
Aby to zrobić, ustaw wartość handleCodeInApp na false w obiekcie firebase.auth.ActionCodeSettings. Podanie identyfikatora pakietu na iOS lub nazwy pakietu na Androida nie jest wymagane, ale jeśli to zrobisz, użytkownik będzie mógł po zakończeniu działania w e-mailu wrócić do określonej aplikacji.
Używany tutaj adres URL witryny jest skonfigurowany w sekcji szablonów działań w e-mailu. Dla wszystkich projektów jest udostępniany domyślny adres URL. Więcej informacji o dostosowywaniu modułu obsługi działań w e-mailu znajdziesz w artykule Dostosowywanie modułów obsługi e-maili.
W tym przypadku link w parametrze zapytania continueUrl będzie linkiem hostingu, którego ładunkiem jest URL określony w obiekcie ActionCodeSettings.
Podczas obsługi działań w e-mailu, takich jak potwierdzanie adresu e-mail, musisz przeanalizować kod działania z parametru zapytania oobCode w precyzyjnym linku, a następnie zastosować go za pomocą applyActionCode, aby zmiana została wprowadzona, czyli adres e-mail został zweryfikowany.
Obsługa działań w e-mailu w aplikacji mobilnej
Możesz określić, czy chcesz najpierw obsługiwać link do kodu działania w aplikacji mobilnej (jeśli jest 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 firebase.auth.ActionCodeSettings. Musisz też podać nazwę pakietu na Androida lub identyfikator pakietu na iOS aplikacji mobilnej.
Używany tutaj zastępczy adres URL witryny, gdy aplikacja mobilna jest niedostępna, jest skonfigurowany w sekcji szablonów działań w e-mailu. Dla wszystkich projektów jest udostępniany domyślny adres URL. Więcej informacji o dostosowywaniu modułu obsługi działań w e-mailu 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 Hosting
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. Kod działania można
zastosować bezpośrednio w aplikacji mobilnej, podobnie jak w przypadku procesu internetowego opisanego w
sekcji Dostosowywanie modułów obsługi e-maili.
Podczas obsługi działań w e-mailu, takich jak potwierdzanie adresu e-mail, musisz przeanalizować kod działania z parametru zapytania oobCode w precyzyjnym linku, a następnie zastosować go za pomocą applyActionCode, aby zmiana została wprowadzona, czyli adres e-mail został zweryfikowany.