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 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 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ę 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 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. |
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) |
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. |
setHandleCodeInApp(boolean status) |
Określa, czy link do działania w e-mailu będzie się otwierać najpierw 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. |
setLinkDomain(String customDomain) |
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 |
setDynamicLinkDomain(String dynamicLinkDomain) |
Rola wycofana. Nie podawaj tego parametru. |
Ten przykład pokazuje, jak wysłać e-maila z linkiem weryfikacyjnym, który najpierw otworzy się w aplikacji mobilnej. Precyzyjny link będzie zawierać URL kontynuacji http://www.example.com/verify?uid=1234
.
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 połączeń z Hostingiem Firebase
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ć linki hostingowe w konsoli Firebase.
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.
Konfigurowanie aplikacji na iOS:
- Jeśli planujesz obsługiwać te linki z aplikacji na iOS, 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.
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 zakończeniu działania kodu 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. W tym celu należy wywołać element setHandleCodeInApp(true)
w obiekcie ActionCodeSettings.Builder. Należy też podać nazwę pakietu aplikacji mobilnej na Androida lub identyfikator pakietu na iOS.
Gdy nie jest dostępna aplikacja mobilna, używany jest tutaj adres URL witryny zapasowej 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 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
. Druga wartość to oryginalna wartość URL
określona w obiekcie ActionCodeSettings
. Kod działania można zastosować bezpośrednio w aplikacji mobilnej w sposób podobny do obsługi kodu w przepływie internetowym opisanym w sekcji dostosowywanie elementów obsługujących e-maile.
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.