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 aplikacja do obsługi newslettera może wymagać od użytkownika potwierdzenia adresu e-mail przed wykupieniem subskrypcji. Użytkownik przechodzi przez proces weryfikacji e-mailowej i oczekuje, że wróci do aplikacji, aby dokończyć subskrypcję.

  • Ogólnie rzecz biorąc, gdy użytkownik rozpoczyna proces resetowania hasła lub potwierdzania adresu e-mail w aplikacji Apple, oczekuje, że zakończy to w aplikacji. Jest to możliwe dzięki przekazywaniu stanu za pomocą adresu URL przejścia.

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 kontynuacji, domena tego adresu musi znajdować się na liście dozwolonych 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 podać instancję ActionCodeSettings. Interfejs ten przyjmuje następujące parametry:

Parametr Typ Opis
url Ciąg znaków

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.
iOSBundleId Ciąg znaków Ustawia identyfikator pakietu. Spowoduje to próbę otwarcia linku w aplikacji Apple, jeśli jest ona zainstalowana. Aplikacja musi być zarejestrowana w konsoli. Jeśli nie podasz identyfikatora pakietu, wartość w tym polu jest ustawiona na identyfikator pakietu głównego pakietu aplikacji.
androidPackageName Ciąg znaków Określa nazwę pakietu na Androida. Spowoduje to próbę otwarcia linku w aplikacji na Androida, jeśli jest zainstalowana.
androidInstallApp wartość logiczna Określa, czy zainstalować aplikację na Androida, jeśli urządzenie ją obsługuje, a aplikacja nie jest jeszcze zainstalowana. Jeśli podasz to pole bez wartości packageName, pojawi się błąd wyjaśniający, że w połączeniu z tym polem należy podać wartość packageName.
androidMinimumVersion Ciąg znaków Minimalna wersja aplikacji obsługiwana w tym procesie. Jeśli określona jest wersja minimalna i zainstalowana jest starsza wersja aplikacji, użytkownik jest kierowany do Sklepu Play, aby ją uaktualnić. Aplikacja na Androida musi być zarejestrowana w konsoli.
handleCodeInApp wartość logiczna 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.
dynamicLinkDomain Ciąg znaków 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 ilustruje, jak wysłać e-mailowy link weryfikacyjny, który najpierw otworzy się w aplikacji mobilnej jako link dynamiczny Firebase, korzystając z niestandardowej domeny linku dynamicznego example.page.link (aplikacja na iOS com.example.ios lub aplikacja na Androida com.example.android, w której aplikacja zostanie zainstalowana, jeśli nie jest jeszcze zainstalowana, a minimalna wersja to 12). Precyzyjny link będzie zawierał ładunek adresu URL typu „Dalej” https://www.example.com/?email=user@example.com.

final user = FirebaseAuth.instance.currentUser;

final actionCodeSettings = ActionCodeSettings(
  url: "http://www.example.com/verify?email=${user?.email}",
  iOSBundleId: "com.example.ios",
  androidPackageName: "com.example.android",
);

await user?.sendEmailVerification(actionCodeSettings);

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ę Linki dynamiczne.

    2. Jeśli Warunki korzystania z Linków dynamicznych nie zostały jeszcze zaakceptowane i masz utworzoną domenę Linków dynamicznych, zrób to teraz.

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

      example.page.link

    4. 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 Apple:

    1. Jeśli planujesz obsługę tych linków z poziomu aplikacji, należy określić identyfikator pakietu 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 jako schemat niestandardowy dla przychodzących adresów URL.
    4. Więcej informacji na ten temat znajdziesz w instrukcjach dotyczących linków dynamicznych platform Apple.

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). Aby to zrobić, ustaw wartość handleCodeInApp na false w obiekcie ActionCodeSettings. Chociaż identyfikator pakietu lub nazwa pakietu na Androida nie są wymagane, po wypełnieniu kodu działania e-maila użytkownik będzie mógł przekierowywać użytkownika z powrotem do określonej aplikacji.

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ą interfejsu androidInstallApp możesz też 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 otwarty na stronie internetowej. Aby to zrobić, ustaw wartość handleCodeInApp na true w obiekcie ActionCodeSettings. Trzeba też podać nazwę pakietu na Androida lub identyfikator pakietu aplikacji mobilnej.Gdy nie ma dostępnej aplikacji mobilnej, używany tu zastępczy adres URL to adres skonfigurowany w sekcji szablonów działań e-mail. Domyślna jest obsługiwana 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 pierwotny 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. 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.