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 w stronie 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ł wejść.
Aplikacja może oferować dostęp tylko zweryfikowanym kontom. Na przykład w przypadku newslettera użytkownik może być zobowiązany do potwierdzenia adresu e-mail przed subskrypcją. Użytkownik przechodzi proces weryfikacji e-maila i musi wrócić do aplikacji, aby dokończyć subskrypcję.
W innych przypadkach użytkownik może rozpocząć proces na urządzeniu mobilnym i oczekiwać, że po weryfikacji wróci do aplikacji mobilnej, a nie do przeglądarki.
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 lub adresu URL kontynuacji 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ę ActionCodeSettings. Można go utworzyć za pomocą powiązanej klasy ActionCodeSettings.Builder, która zawiera te metody:
Metoda | Opis |
---|---|
setUrl(String url) |
Ustawia link (URL stanu lub kontynuacji), który ma różne znaczenia w zależności od kontekstu:
|
setIOSBundleId(String iOSBundleId) |
Ustawia identyfikator pakietu na iOS. Spowoduje to próbę otwarcia linku w aplikacji na iOS, jeśli jest ona zainstalowana. Aplikacja na iOS musi być zarejestrowana w Konsoli. |
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) |
Ustawia nazwę pakietu na Androida. Jeśli aplikacja jest zainstalowana, spróbuje otworzyć link w aplikacji na Androida. Jeśli wartość installIfNotAvailable to true , określa ona, czy zainstalować aplikację na Androida, jeśli urządzenie ją obsługuje, a aplikacja nie jest jeszcze zainstalowana. Jeśli określono wartość minimumVersion, a zainstalowana jest starsza wersja aplikacji, użytkownik zostanie przekierowany do Sklepu Play, aby zaktualizować aplikację. Aplikacja na Androida musi być zarejestrowana w Konsoli. |
setHandleCodeInApp(boolean status) |
Określ, czy link akcji e-maila ma się najpierw otwierać w aplikacji mobilnej, czy w witrynie. 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. |
setDynamicLinkDomain(String dynamicLinkDomain) |
Ustawia domenę (lub domenę podrzędną) linku dynamicznego, która ma być używana w przypadku bieżącego linku, jeśli ma być otwierany za pomocą Linków dynamicznych Firebase. W przypadku każdego projektu można skonfigurować wiele dynamicznych domen linków, więc w tym polu możesz wybrać jedną z nich. Jeśli nie podasz żadnej domeny, domyślnie będzie używana pierwsza domena. |
Ten przykład pokazuje, jak wysłać e-mail z linkiem weryfikacyjnym, który najpierw otworzy się w aplikacji mobilnej jako dynamiczny link Firebase (aplikacja na iOS com.example.ios
lub na Androida com.example.android
). Ten precyzyjny link będzie zawierać treść adresu URL kontynuacji https://www.example.com/?email=user@example.com
.
Kotlin
val auth = Firebase.auth val user = auth.currentUser!! val url = "http://www.example.com/verify?uid=" + user.uid val actionCodeSettings = ActionCodeSettings.newBuilder() .setUrl(url) .setIOSBundleId("com.example.ios") // The default for this is populated with the current android package name. .setAndroidPackageName("com.example.android", false, null) .build() user.sendEmailVerification(actionCodeSettings) .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "Email sent.") } }
Java
FirebaseAuth auth = FirebaseAuth.getInstance(); FirebaseUser user = auth.getCurrentUser(); String url = "http://www.example.com/verify?uid=" + user.getUid(); ActionCodeSettings actionCodeSettings = ActionCodeSettings.newBuilder() .setUrl(url) .setIOSBundleId("com.example.ios") // The default for this is populated with the current android package name. .setAndroidPackageName("com.example.android", false, null) .build(); user.sendEmailVerification(actionCodeSettings) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d(TAG, "Email sent."); } } });
Konfigurowanie Linków dynamicznych Firebase
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łączanie Linków dynamicznych Firebase:
- W konsoli Firebase otwórz sekcję Dynamic Links.
-
Jeśli nie zaakceptowałeś(-aś) jeszcze warunków Dynamic Links i nie utworzyłeś(-aś) domeny Dynamic Links, zrób to teraz.
Jeśli domena Dynamic Links została już utworzona, zanotuj ją. Domena Dynamic Linkszazwyczaj wygląda tak:
example.page.link
Będzie ona potrzebna do skonfigurowania aplikacji na Apple lub Androida w celu przechwytywania przychodzącego linku.
Konfigurowanie aplikacji na Androida:
- Jeśli planujesz obsługiwać te linki w aplikacji na Androida, musisz podać nazwę pakietu Androida w ustawieniach projektu w Konsoli Firebase. Dodatkowo musisz podać hasz 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 odbierania linków dynamicznych na Androida.
Konfigurowanie aplikacji na iOS:
- Jeśli planujesz obsługiwać te linki z aplikacji na iOS, musisz podać identyfikator pakietu iOS w ustawieniach projektu w konsoli Firebase. Dodatkowo musisz podać identyfikator App Store i identyfikator zespołu deweloperów Apple.
- Musisz też skonfigurować domenę uniwersalnego linka FDL jako domenę powiązaną w możliwościach aplikacji.
- Jeśli planujesz rozpowszechniać aplikację na urządzeniach z iOS w wersji 8 lub starszej, musisz ustawić identyfikator pakietu na iOS jako schemat niestandardowy dla przychodzących adresów URL.
- Więcej informacji znajdziesz w instrukcjach odbierania linków dynamicznych na iOS.
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.
W tym celu należy wywołać element setHandleCodeInApp(false)
w obiekcie ActionCodeSettings.Builder. Identyfikator pakietu na iOS lub 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 dotyczące e-maila znajdziesz w artykule [GA4] Dostosowywanie elementów przetwarzających działanie dotyczące e-maila.
W tym przypadku link w parametrze zapytania continueUrl
będzie linkiem FDL, którego ładunek to URL
określony w obiekcie ActionCodeSettings
. Możesz przechwycić i obsługiwać przychodzący link z aplikacji bez dodatkowych zależności, ale zalecamy użycie biblioteki klienta FDL, aby przeanalizować precyzyjny link.
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 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). W przypadku aplikacji na Androida możesz też za pomocą wartości logicznej installIfNotAvailable
określić, że aplikacja ma być 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.
W tym celu należy wywołać element setHandleCodeInApp(true)
w obiekcie ActionCodeSettings.Builder. Musisz też podać nazwę pakietu na Androida lub identyfikator pakietu na iOS.
Gdy nie jest dostępna aplikacja mobilna, używany jest tutaj domyślny adres URL witryny, który został 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 dotyczące e-maila znajdziesz w artykule [GA4] Dostosowywanie elementów przetwarzających działanie dotyczące e-maila.
W tym przypadku link do aplikacji mobilnej wysłany do użytkownika będzie linkiem FDL, którego ładunek to adres URL kodu działania skonfigurowany w Konsoli z parametrami zapytania oobCode
, mode
, apiKey
i continueUrl
. Druga wartość to oryginalna wartość URL
określona w obiekcie ActionCodeSettings
. Możesz przechwycić i obsługiwać przychodzący link z aplikacji bez dodatkowych zależności, ale zalecamy użycie biblioteki klienta FDL do parsowania precyzyjnego linku. Kod działania można zastosować bezpośrednio w 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ą applyActionCode
, aby zmiana mogła zacząć obowiązywać, czyli aby adres e-mail został zweryfikowany.