Stan zaliczenia w działaniach e-maili

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:

  • Gdy link jest obsługiwany w widżetach działań w przeglądarce, jest to precyzyjny link w parametrze zapytania continueUrl.
  • Gdy link jest obsługiwany bezpośrednio w aplikacji, jest to parametr zapytania continueUrl w precyzyjnym linku dynamicznego.
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.");
                }
            }
        });

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.

  1. Włączanie Linków dynamicznych Firebase:

    1. W konsoli Firebase otwórz sekcję Dynamic Links.
    2. 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.

  2. Konfigurowanie aplikacji na Androida:

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

    1. 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.
    2. Musisz też skonfigurować domenę uniwersalnego linka FDL jako domenę powiązaną w możliwościach aplikacji.
    3. 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.
    4. 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, apiKeycontinueUrl. 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.