Możesz przekazać stan za pomocą adresu URL kontynuowania podczas wysyłania e-maili z działaniami dotyczącymi resetowania hasła lub weryfikowania adresu e-mail użytkownika. Dzięki temu użytkownik może wrócić do aplikacji po wykonaniu działania. Dodatkowo możesz określić, czy link do działania e-mail ma być obsługiwany bezpośrednio w zainstalowanej aplikacji mobilnej, a nie na stronie internetowej.
Jest to szczególnie przydatne w tych typowych sytuacjach:
Użytkownik, który obecnie nie jest zalogowany, może próbować uzyskać dostęp do treści, które wymagają od niego zalogowania się. Użytkownik mógł jednak nie pamiętać hasła i rozpocząć proces resetowania hasła. Pod koniec procesu użytkownik oczekuje, że wróci do tej sekcji aplikacji, do której chciał uzyskać dostęp.
Aplikacja może oferować dostęp tylko do zweryfikowanych kont. Na przykład newsletter może wymagać od użytkownika zweryfikowania adresu e-mail przed jego zasubskrybowaniem. Użytkownik przechodzi przez proces weryfikacji adresu e-mail i oczekuje, że wróci do aplikacji, aby dokończyć proces subskrypcji.
W innych przypadkach użytkownik mógł rozpocząć proces z urządzenia mobilnego i spodziewać się, że po weryfikacji wróci do aplikacji mobilnej, a nie do przeglądarki.
Możliwość przekazywania stanu za pomocą adresu URL kontynuowania to potężna funkcja uwierzytelniania Firebase, która może znacznie zwiększyć wygodę użytkowników.
Przekazywanie stanu/kontynuacji w działaniach e-maili
Aby w bezpieczny sposób przekazywać dalej adres URL, domena tego adresu musi znajdować się na białej liście w konsoli Firebase. W tym celu 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 resetowania hasła lub e-maila weryfikacyjnego musi być podany instancja 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/ciąg dalszy), który ma różne znaczenia w różnych kontekstach:
|
setIOSBundleId(String iOSBundleId) |
Określa identyfikator pakietu na iOS. Zostanie podjęta próba 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. Spowoduje to próbę otwarcia linku w aplikacji na Androida, jeśli jest zainstalowana. Jeśli parametr installIfNotAvailable ma wartość true , określa, czy należy zainstalować aplikację na Androida, jeśli urządzenie ją obsługuje, a aplikacja nie jest jeszcze zainstalowana. Jeśli określona jest wartość minimumVersion i jest zainstalowana starsza wersja aplikacji, użytkownik jest kierowany do Sklepu Play, aby ją uaktualnić. Aplikacja na Androida musi być zarejestrowana w konsoli. |
setHandleCodeInApp(boolean status) |
Określa, czy link do działania e-mail zostanie najpierw otwarty w aplikacji mobilnej czy w przeglądarce. Wartość domyślna to false (fałsz). Jeśli zasada ma wartość Prawda, link z kodem działania jest wysyłany jako uniwersalny link lub link do aplikacji na Androida i jest otwierany przez aplikację, jeśli jest zainstalowana. W przeciwnym razie kod zostanie najpierw wysłany do widżetu internetowego, a następnie kliknięcie przycisku Dalej spowoduje przekierowanie do aplikacji, jeśli jest zainstalowana. |
setDynamicLinkDomain(String dynamicLinkDomain) |
Konfiguruje domenę linku dynamicznego (lub subdomenę), która ma być używana w przypadku bieżącego linku, jeśli ma on zostać otwarty za pomocą Linków dynamicznych Firebase. W projekcie można skonfigurować wiele domen linków dynamicznych, dlatego w tym polu można wybrać jedną z nich. Jeśli nie podasz żadnej wartości, domyślnie zostanie użyta pierwsza domena. |
Przykład poniżej pokazuje, jak wysłać e-maila weryfikacyjnego, który będzie najpierw otwierany w aplikacji mobilnej jako link dynamiczny Firebase (aplikacja com.example.ios
na iOS lub na Androida com.example.android
). Precyzyjny link będzie zawierał ciąg dalszy ładunku adresu URL https://www.example.com/?email=user@example.com
.
Kotlin+KTX
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
Uwierzytelnianie Firebase używa Linków dynamicznych Firebase do wysyłania linku, który ma otwierać się w aplikacji mobilnej. Aby korzystać z tej funkcji, musisz skonfigurować Linki dynamiczne w konsoli Firebase.
Włącz Linki dynamiczne Firebase:
- W konsoli Firebase otwórz sekcję Linki dynamiczne.
-
Jeśli warunki korzystania z linków dynamicznych nie zostały jeszcze zaakceptowane, a domena linków dynamicznych została utworzona, zrób to teraz.
Jeśli masz już utworzoną domenę linków dynamicznych, zanotuj ją. Domena linków dynamicznych wygląda zazwyczaj tak:
example.page.link
Będzie ona potrzebna podczas konfigurowania aplikacji na Apple lub Androida tak, aby przechwytywała link przychodzący.
Konfigurowanie aplikacji na Androida:
- Jeśli planujesz obsługiwać te linki w aplikacji na Androida, nazwę pakietu na Androida musisz określić w ustawieniach projektu w konsoli Firebase. Dodatkowo należy podać wartości SHA-1 i SHA-256 certyfikatu aplikacji.
- Musisz też skonfigurować filtr intencji dla precyzyjnego linku w pliku AndroidManifest.xml.
- Więcej informacji na ten temat znajdziesz w instrukcjach odbierania linków dynamicznych na Androida.
Konfigurowanie aplikacji na iOS:
- Jeśli planujesz obsługiwać te linki w aplikacji na iOS, identyfikator pakietu na iOS należy podać w ustawieniach projektu w konsoli Firebase. Dodatkowo trzeba też podać identyfikator App Store i identyfikator zespołu dewelopera Apple.
- Konieczne będzie też skonfigurowanie uniwersalnej domeny linku FDL jako domeny powiązanej w możliwościach aplikacji.
- Jeśli zamierzasz rozpowszechniać swoją aplikację na iOS w wersji 8 lub starszej, musisz ustawić identyfikator pakietu na iOS jako schemat niestandardowy dla przychodzących adresów URL.
- Więcej informacji na ten temat znajdziesz w instrukcjach odbierania linków dynamicznych na iOS.
Obsługa działań dotyczących poczty e-mail w aplikacji internetowej
Możesz określić, czy link z kodem działania ma być najpierw obsługiwany w aplikacji internetowej, a po pomyślnym ukończeniu przekierowywać do innej strony internetowej lub aplikacji mobilnej, o ile ta aplikacja jest dostępna.
Aby to zrobić, wywołaj setHandleCodeInApp(false)
w obiekcie ActionCodeSettings.Builder. Chociaż identyfikator pakietu na iOS ani nazwa pakietu na Androida nie są wymagane, podanie tych identyfikatorów pozwoli użytkownikowi na przekierowywanie użytkownika z powrotem do określonej aplikacji po zakończeniu kodu działania związanego z e-mailem.
Użyty tutaj adres internetowy jest adresem skonfigurowanym w sekcji szablonów działań e-mailowych. We wszystkich projektach jest udostępniana usługa domyślna. Więcej informacji o dostosowywaniu modułów obsługi e-maili znajdziesz w artykule o dostosowywaniu modułów obsługi poczty e-mail.
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ć link przychodzący z aplikacji bez konieczności wykonywania dodatkowych działań, ale zalecamy przeanalizowanie precyzyjnego linku za pomocą biblioteki klienta FDL.
W przypadku działań związanych z e-mailami, takich jak potwierdzanie adresu e-mail, kod działania z parametru zapytania oobCode
musi zostać wyodrębniony z precyzyjnego linku, a następnie zastosowany za pomocą funkcji applyActionCode
, aby zmiana zaczęła obowiązywać, czyli została potwierdzona własność adresu e-mail.
Obsługa działań związanych z pocztą e-mail w aplikacji mobilnej
Możesz określić, czy link z kodem działania ma być najpierw obsługiwany w aplikacji mobilnej, o ile jest ona zainstalowana. W przypadku aplikacji na Androida możesz też za pomocą wartości logicznej installIfNotAvailable
określić, że aplikacja ma zostać zainstalowana, jeśli urządzenie obsługuje tę funkcję i nie jest jeszcze zainstalowana.
Jeśli link zostanie kliknięty na urządzeniu, które nie obsługuje aplikacji mobilnej, zostanie on otwarty na stronie internetowej.
Aby to zrobić, wywołaj setHandleCodeInApp(true)
w obiekcie ActionCodeSettings.Builder. Należy też określić nazwę pakietu aplikacji na Androida lub identyfikator pakietu na iOS.
Zastępczy adres URL używany tutaj, gdy nie ma aplikacji mobilnej, to adres skonfigurowany w sekcji szablonów działań e-mail. We wszystkich projektach jest udostępniana aplikacja domyślna. Więcej informacji o dostosowywaniu modułów obsługi e-maili znajdziesz w artykule o dostosowywaniu modułów obsługi poczty e-mail.
W tym przypadku link do aplikacji mobilnej wysłany do użytkownika będzie linkiem FDL. ładunek to URL kodu działania skonfigurowany w konsoli z parametrami zapytania oobCode
, mode
, apiKey
i continueUrl
. Ten ostatni będzie oryginalnym identyfikatorem URL
określonym w obiekcie ActionCodeSettings
. Możesz przechwycić i obsługiwać linki przychodzące z aplikacji bez konieczności wykonywania dodatkowych działań, ale zalecamy użycie biblioteki klienta FDL do przeanalizowania precyzyjnego linku. Kod działania można zastosować bezpośrednio w aplikacji mobilnej. Działa on podobnie do kodu strony internetowej opisanego w sekcji o dostosowywaniu modułów obsługi poczty e-mail.
W przypadku działań związanych z e-mailami, takich jak potwierdzanie adresu e-mail, kod działania z parametru zapytania oobCode
musi zostać wyodrębniony z precyzyjnego linku, a następnie zastosowany za pomocą funkcji applyActionCode
, aby zmiana zaczęła obowiązywać, czyli została potwierdzona własność adresu e-mail.