Stan zaliczenia w działaniach e-maili

Stan za pomocą adresu URL kontynuacji możesz przekazywać podczas wysyłania e-maili z działaniami związanymi z resetowaniem hasła lub weryfikacją 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-maila ma być obsługiwany bezpośrednio z poziomu aplikacji mobilnej, gdy jest ona zainstalowana, a nie na 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ą od niego zalogowania. Użytkownik mógł jednak zapomnieć hasło i w związku z tym aktywować procedurę resetowania. Pod koniec procesu użytkownik oczekuje, że wróci do sekcji aplikacji, do której chce uzyskać dostęp.

  • Aplikacja może oferować dostęp tylko do zweryfikowanych kont. Na przykład newsletter może wymagać od użytkownika potwierdzenia adresu e-mail przed zasubskrybowaniem go. Użytkownik przechodzi proces weryfikacji e-mailowej i spodziewa się wrócić do aplikacji, aby dokończyć proces subskrypcji.

  • W innych przypadkach użytkownik mógł rozpocząć proces na urządzeniu mobilnym i oczekiwać, że powróci do aplikacji mobilnej zamiast do przeglądarki.

Uwierzytelnianie Firebase pozwala na przekazywanie stanu za pomocą adresu URL kontynuowania i może znacznie zwiększyć wygodę użytkowników.

Adres URL przekazywania stanu/kontynuowania w działaniach związanych z e-mailami

Aby bezpiecznie przekazywać adres URL typu „Dalej”, domena tego adresu musi znajdować się na białej liście w konsoli Firebase. Możesz to zrobić w sekcji Uwierzytelnianie przez dodanie tej domeny do listy Autoryzowane domeny na karcie Metoda logowania, jeśli jeszcze się tam nie znajduje.

Podczas wysyłania e-maila do resetowania hasła lub e-maila weryfikacyjnego musisz udostępnić wystąpienie ActionCodeSettings. Można go utworzyć przy użyciu powiązanej klasy ActionCodeSettings.Builder, która zawiera te metody:

Metoda Opis
setUrl(String url)

Ustawia link (adres URL stanu/kontynuacji), 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.
  • Jeśli link jest obsługiwany bezpośrednio w aplikacji, jest to parametr zapytania continueUrl w precyzyjnym linku linku dynamicznego.
setIOSBundleId(String iOSBundleId) Ustawia identyfikator pakietu na iOS. Spróbujemy otworzyć link w zainstalowanej aplikacji na iOS. Aplikacja na iOS musi być zarejestrowana w konsoli.
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) Określa nazwę pakietu na Androida. Spowoduje to próbę otwarcia linku w aplikacji na Androida, jeśli jest zainstalowana. Jeśli zasada installIfNotAvailable ma wartość true, określa, czy zainstalować aplikację na Androida, jeśli urządzenie ją obsługuje, a aplikacja nie jest jeszcze zainstalowana. Jeśli określona jest wersja minimalna i zainstalowana jest starsza wersja aplikacji, użytkownik zostanie przekierowany do Sklepu Play, aby uaktualnić aplikację. Aplikacja na Androida musi być zarejestrowana w konsoli.
setHandleCodeInApp(boolean status) Określa, czy link do działania w e-mailu zostanie najpierw otwarty w aplikacji mobilnej, czy jako link internetowy. Wartość domyślna to false (fałsz). Jeśli zasada ma wartość Prawda, link z kodem działania jest wysyłany jako link uniwersalny lub link 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 potem Dalej następuje przekierowanie do aplikacji, jeśli jest zainstalowana.
setDynamicLinkDomain(String dynamicLinkDomain) Konfiguruje domenę (lub subdomenę) linku dynamicznego, która ma być używana w bieżącym połączeniu, jeśli ma ono być otwierane za pomocą Linków dynamicznych Firebase. W każdym projekcie można skonfigurować wiele domen linków dynamicznych, dlatego to pole umożliwia wybranie jednej z nich. Jeśli nie zostanie podana żadna nazwa, domyślnie zostanie użyta pierwsza domena.

Poniższy przykład pokazuje, jak wysłać e-mailowy link weryfikacyjny, który najpierw otworzy się w aplikacji mobilnej jako link dynamiczny Firebase (aplikacja na iOS com.example.ios lub aplikacja na Androida com.example.android). Precyzyjny link będzie zawierać ładunek adresu URL typu 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.");
                }
            }
        });

Uwierzytelnianie Firebase używa Linków dynamicznych Firebase do 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łącz Linki dynamiczne Firebase:

    1. W konsoli Firebase otwórz sekcję Połączenia dynamiczne.
    2. Jeśli Warunki Linków dynamicznych nie zostały jeszcze zaakceptowane i masz utworzoną domenę Linków dynamicznych, zrób to teraz.

      Jeśli masz już utworzoną domenę Linki dynamiczne, zanotuj ją. Domena linków dynamicznych zwykle wygląda tak jak w przykładzie poniżej:

      example.page.link

      Będzie ona potrzebna podczas konfigurowania aplikacji na Apple lub Androida w taki sposób, aby przechwytywała link przychodzący.

  2. Konfigurowanie aplikacji na Androida:

    1. Jeśli zamierzasz obsługiwać te linki w aplikacji na Androida, musisz określić nazwę pakietu na Androida w ustawieniach projektu w konsoli 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 na ten temat znajdziesz w instrukcjach dotyczących odbierania linków dynamicznych w Androidzie.
  3. Konfigurowanie aplikacji na iOS:

    1. Jeśli zamierzasz obsługiwać te linki w aplikacji na iOS, musisz określić identyfikator pakietu na iOS w ustawieniach projektu w konsoli Firebase. Musisz też podać identyfikator App Store i identyfikator zespołu Apple Developer Team.
    2. Konieczne będzie też skonfigurowanie domeny linku uniwersalnego FDL jako powiązanej domeny w funkcjach aplikacji.
    3. Jeśli planujesz dystrybuować swoją aplikację na iOS w wersji 8 i starszych, musisz ustawić identyfikator pakietu iOS jako schemat niestandardowy dla przychodzących adresów URL.
    4. Więcej informacji na ten temat znajdziesz w instrukcjach dotyczących odbierania linków dynamicznych na iOS.

Obsługa działań dotyczących poczty e-mail w aplikacji internetowej

Możesz określić, czy chcesz, aby link kodu działania był najpierw obsługiwany z aplikacji internetowej, a następnie po pomyślnym przekierowaniu na inną stronę internetową lub do aplikacji mobilnej (pod warunkiem, że aplikacja mobilna jest dostępna). Można to zrobić, wywołując funkcję setHandleCodeInApp(false) w obiekcie ActionCodeSettings.Builder. Identyfikator pakietu na iOS ani nazwa pakietu na Androida nie są wymagane, ale ich podanie pozwoli użytkownikowi przekierować użytkownika z powrotem do określonej aplikacji po uzupełnieniu kodu działania e-mailem.

Użyty tutaj URL strony internetowej jest skonfigurowany w sekcji szablonów działań e-mail. Domyślna jest udostępniona dla wszystkich projektów. Więcej informacji o dostosowywaniu modułu obsługi działań dotyczących poczty e-mail znajdziesz w artykule na temat dostosowywania modułów obsługi poczty e-mail.

W tym przypadku link w parametrze zapytania continueUrl będzie linkiem FDL, którego ładunkiem jest URL określony w obiekcie ActionCodeSettings. Możesz przechwytywać i obsługiwać linki przychodzące z aplikacji bez żadnych dodatkowych zależności, ale zalecamy przeanalizowanie precyzyjnego linku za pomocą biblioteki klienta FDL.

W przypadku działań związanych z pocztą e-mail, takich jak potwierdzanie 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 zaczęła obowiązywać, czyli weryfikowany adres e-mail.

Obsługa działań poczty 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 za pomocą wartości logicznej installIfNotAvailable można też określić, że aplikacja ma zostać zainstalowana, jeśli urządzenie obsługuje, ale 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. Można to zrobić, wywołując funkcję setHandleCodeInApp(true) w obiekcie ActionCodeSettings.Builder. Należy też podać nazwę pakietu na Androida lub identyfikator pakietu aplikacji mobilnej na iOS.

Gdy nie ma dostępnych aplikacji mobilnych, używany w tym miejscu zastępczy adres URL witryny należy skonfigurować w sekcji szablonów działań e-mail. Domyślna jest udostępniana dla wszystkich projektów. Więcej informacji o dostosowywaniu modułu obsługi działań dotyczących poczty e-mail znajdziesz w artykule na temat dostosowywania modułów obsługi poczty e-mail.

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, apiKey i continueUrl. Jest to pierwotna wartość URL określona w obiekcie ActionCodeSettings. Możesz przechwytywać i obsługiwać linki przychodzące z aplikacji bez żadnych dodatkowych zależności, ale zalecamy przeanalizowanie precyzyjnego linku za pomocą biblioteki klienta FDL. Kod działania można zastosować bezpośrednio z aplikacji mobilnej w podobny sposób jak w przypadku procesu internetowego opisanego w sekcji Dostosowywanie modułów obsługi poczty e-mail.

W przypadku działań związanych z pocztą e-mail, takich jak potwierdzanie 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 zaczęła obowiązywać, czyli weryfikowany adres e-mail.