Stan zaliczenia w działaniach e-maili

Podczas wysyłania działań e-mailowych dotyczących resetowania hasła lub weryfikowania 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 e-mailowego ma być obsługiwany bezpośrednio przez aplikację mobilną, gdy jest zainstalowana, zamiast przez stronę internetową.

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 weryfikacji 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, którą udostępnia usługa Firebase Uwierzytelnianie i która może znacznie poprawić wrażenia użytkownika.

Przekazywanie stanu adresu URL dalszego działania w działaniach e-mailowych

Aby bezpiecznie przekazać URL dalszego działania, musisz dodać domenę adresu URL jako autoryzowaną domenę:

  1. W konsoli Firebase otwórz kartę Bezpieczeństwo > Uwierzytelnianie > Ustawienia.

  2. W sekcji Autoryzowane domeny kliknij Dodaj domenę i dodaj adres URL.

Podczas wysyłania e-maila z prośbą o zresetowanie hasła lub e-maila weryfikacyjnego musisz podać instancję ActionCodeSettings. Możesz ją utworzyć za pomocą powiązanej klasy ActionCodeSettings.Builder , która zawiera te metody:

Metoda Opis
setUrl(String url)

Ustawia link (stan lub URL dalszego działania), który ma różne znaczenia w różnych kontekstach:

  • Gdy link jest obsługiwany w widżetach działań internetowych, jest to precyzyjny link w parametrze zapytania continueUrl.
  • Gdy link jest obsługiwany bezpośrednio w aplikacji, jest to continueUrl parametr zapytania w precyzyjnym linku linku Hosting.
setIOSBundleId(String iOSBundleId) Ustawia identyfikator pakietu na iOS, aby pomóc usłudze Firebase Authentication określić, czy ma utworzyć link tylko do internetu czy link mobilny, który zostanie otwarty na urządzeniu Apple.
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) 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.
setHandleCodeInApp(boolean status) Określa, czy link do działania e-mailowego 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.
setLinkDomain(String customDomain) Gdy dla projektu są zdefiniowane 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).
setDynamicLinkDomain(String dynamicLinkDomain) Rola wycofana. Nie podawaj tego parametru.

Poniższy przykład pokazuje, jak wysłać link weryfikacyjny, który zostanie otwarty najpierw w aplikacji mobilnej. Precyzyjny link będzie zawierać ładunek adresu URL dalszego działania 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.");
                }
            }
        });

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.

  1. Konfigurowanie aplikacji na Androida:

    1. 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.
    2. Musisz też skonfigurować filtr intencji dla precyzyjnego linku w pliku AndroidManifest.xml.
    3. Więcej informacji znajdziesz w instrukcjach dotyczących odbierania linków hostingu na Androida.
  2. Konfigurowanie aplikacji na iOS:

    1. Jeśli planujesz obsługiwać te linki w aplikacji na iOS, będziesz musiał skonfigurować domenę linku Hosting jako powiązaną domenę w funkcjach aplikacji.
    2. Więcej informacji znajdziesz w instrukcjach dotyczących odbierania linków hostingu na iOS.

Obsługa działań e-mailowych 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 do innej strony internetowej lub aplikacji mobilnej po pomyślnym zakończeniu działania, pod warunkiem że aplikacja mobilna jest dostępna. Aby to zrobić, wywołaj metodę 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 zakończeniu działania e-mailowego.

Używany tutaj adres URL witryny jest skonfigurowany w sekcji szablonów działań e-mailowych. Dla wszystkich projektów jest udostępniany domyślny adres URL. Więcej informacji o dostosowywaniu modułów obsługi e-maili 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 URL określony w ActionCodeSettings obiekcie.

Podczas obsługi działań e-mailowych, 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ą metody applyActionCode, aby zmiana została wprowadzona, czyli adres e-mail został zweryfikowany.

Obsługa działań e-mailowych 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, zostanie otwarty na stronie internetowej. Aby to zrobić, wywołaj metodę setHandleCodeInApp(true) w obiekcie ActionCodeSettings.Builder. 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 nie jest dostępna, jest skonfigurowany w sekcji szablonów działań e-mailowych. Dla wszystkich projektów jest udostępniany domyślny adres URL. Więcej informacji o dostosowywaniu modułów obsługi e-maili 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 z aplikacji mobilnej, podobnie jak w przypadku procesu internetowego oppisane w sekcji Dostosowywanie modułów obsługi e-maili.

Podczas obsługi działań e-mailowych, 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ą metody applyActionCode, aby zmiana została wprowadzona, czyli adres e-mail został zweryfikowany.