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 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:

  • 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 Hosting.
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.");
                }
            }
        });

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.

  1. Konfigurowanie aplikacji na Androida:

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

    1. 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.
    2. 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, apiKeycontinueUrl. 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.