Podczas wysyłania e-maili z działaniami związanymi z resetowaniem hasła lub weryfikacją adresu e-mail użytkownika możesz przekazywać 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 z aplikacji mobilnej, jeśli jest ona zainstalowana, zamiast ze 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 mógł jednak zapomnieć hasła i w związku z tym 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 w przypadku newslettera użytkownik może musieć potwierdzić swój adres e-mail, zanim będzie mógł się zasubskrybować. Użytkownik przechodzi proces weryfikacji adresu e-mail i oczekuje, że po jego zakończeniu 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 zaawansowana funkcja uwierzytelniania Firebase, która może znacznie poprawić wrażenia użytkownika.
Przekazywanie stanu adresu URL dalszego działania w działaniach związanych z e-mailem
Aby bezpiecznie przekazać adres URL dalszego działania, domena tego adresu URL musi znajdować się na białej liście w Firebase konsoli. Aby to zrobić, w sekcji Uwierzytelnianie dodaj tę domenę do listy Autoryzowane domeny na karcie Metoda logowania, jeśli jeszcze jej tam nie ma.
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 (adres 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 należy utworzyć link tylko do internetu czy link mobilny, który będzie otwierany na urządzeniu Apple. |
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) |
Ustawia nazwę pakietu Androida, aby pomóc Firebase Authentication określić, czy należy utworzyć link tylko do internetu czy link mobilny, który zostanie otwarty na urządzeniu z Androidem. |
setHandleCodeInApp(boolean status) |
Określa, czy link do działania w e-mailu zostanie najpierw otwarty w aplikacji mobilnej czy w internecie. Wartość domyślna to fałsz. Jeśli ma 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 fałszywej kod zostanie najpierw wysłany do widżetu internetowego, a następnie po kliknięciu przycisku kontynuacji nastąpi przekierowanie do aplikacji, jeśli jest ona zainstalowana. |
setLinkDomain(String customDomain) |
Jeśli dla projektu zdefiniowano niestandardowe domeny linków Hosting, określ, której z nich chcesz używać, gdy link ma być otwierany przez określoną aplikację mobilną. W przeciwnym razie automatycznie wybierana jest domyślna domena (np. PROJECT_ID.firebaseapp.com |
setDynamicLinkDomain(String dynamicLinkDomain) |
Rola wycofana. Nie podawaj tego parametru. |
Poniższy przykład pokazuje, jak wysłać link weryfikacyjny, który najpierw otworzy się w aplikacji mobilnej. Precyzyjny link będzie zawierać ładunek adresu 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 linków Hostingu Firebase
Firebase Authentication używa Firebase Hosting podczas wysyłania linku, który ma być otwierany w aplikacji mobilnej. Aby korzystać z tej funkcji, musisz skonfigurować linki do hostingu w konsoli Firebase.
Konfigurowanie aplikacji na Androida:
- Jeśli zamierzasz obsługiwać te linki w aplikacji na Androida, w ustawieniach projektu w Firebase konsoli musisz podać nazwę pakietu aplikacji. Dodatkowo należy 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 otrzymywania linków do hostingu Androida.
Konfigurowanie aplikacji na iOS:
- Jeśli planujesz obsługiwać te linki w aplikacji na iOS, musisz skonfigurować domenę linku Hosting jako powiązaną domenę w funkcjach aplikacji.
- Więcej informacji znajdziesz w instrukcjach dotyczących otrzymywania linków do hostingu iOS.
Obsługa działań dotyczących e-maili w aplikacji internetowej
Możesz określić, czy chcesz najpierw obsłużyć link do kodu działania z aplikacji internetowej, a następnie przekierować użytkownika na inną stronę internetową lub do aplikacji mobilnej po pomyślnym zakończeniu działania, pod warunkiem że aplikacja mobilna jest dostępna.
W tym celu wywołaj setHandleCodeInApp(false)
w obiekcie ActionCodeSettings.Builder. Identyfikator pakietu na iOS lub nazwa pakietu na Androida nie są wymagane, ale ich podanie umożliwi użytkownikowi przekierowanie z powrotem do określonej aplikacji po wykonaniu działania związanego z kodem weryfikacyjnym w e-mailu.
Użyty tutaj adres URL to adres skonfigurowany w sekcji szablonów działań związanych z e-mailami. Domyślny jest udostępniany we wszystkich projektach. Więcej informacji o dostosowywaniu modułu obsługi działań e-mail znajdziesz w artykule Dostosowywanie modułów obsługi e-maili.
W tym przypadku link w parametrze zapytania continueUrl
będzie linkiem Hosting, którego ładunkiem jest wartość URL
określona 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ą applyActionCode
, aby zmiana została wprowadzona, czyli adres e-mail został zweryfikowany.
Obsługa działań związanych z e-mailami w aplikacji mobilnej
Możesz określić, czy chcesz najpierw obsługiwać link do kodu działania w aplikacji mobilnej, pod warunkiem że jest ona zainstalowana. Jeśli link zostanie kliknięty na urządzeniu, które nie obsługuje aplikacji mobilnej, otworzy się strona internetowa. W tym celu wywołaj 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 żadna aplikacja mobilna, używany jest awaryjny adres URL strony internetowej skonfigurowany w sekcji szablonów działań e-mail. Dla wszystkich projektów jest udostępniana domyślna pula. Więcej informacji o dostosowywaniu modułu obsługi działań e-mail 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 skonfigurowany w Konsoli adres URL kodu działania z parametrami zapytania oobCode
, mode
, apiKey
i continueUrl
. Będzie to pierwotna wartość URL
określona w obiekcie ActionCodeSettings
. Kod działania można zastosować bezpośrednio z aplikacji mobilnej, podobnie jak w przypadku przepływu internetowego opisanego w sekcji Dostosowywanie procedur 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 została wprowadzona, czyli adres e-mail został zweryfikowany.