Przekazywanie stanu w działaniach związanych z e-mailami

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”, jego domenę należy dodać w konsoli Firebase jako autoryzowaną domenę. 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ę firebase.auth.ActionCodeSettings. Interfejs ten przyjmuje następujące parametry:

Parametr Typ Opis
url string,

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.
iOS ({bundleId: ciąg znaków}|niezdefiniowany) Ustawia identyfikator pakietu na iOS. Spróbujemy otworzyć link w zainstalowanej aplikacji na iOS. Aplikacja na iOS musi być zarejestrowana w konsoli.
android ({packageName: string, installApp:boolean|undefined, minimumVersion: string|undefined}|undefined) Określa nazwę pakietu na Androida. Spowoduje to próbę otwarcia linku w zainstalowanej aplikacji na Androida. Jeśli zasada installApp jest poprawna, określa, czy zainstalować aplikację na Androida, jeśli urządzenie obsługuje tę aplikację, a aplikacja nie jest jeszcze zainstalowana. Jeśli podasz to pole bez pola packageName, pojawi się błąd wyjaśniający, że w powiązaniu z tym polem należy podać packageName. Jeśli określisz minimumVersion i zainstalowana jest starsza wersja aplikacji, użytkownik zostanie przekierowany do Sklepu Play, aby ją uaktualnić. Aplikacja na Androida musi być zarejestrowana w Konsoli.
handleCodeInApp (wartość logiczna|niezdefiniowana) 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|niezdefiniowany) 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.

var actionCodeSettings = {
  url: 'https://www.example.com/?email=' + firebase.auth().currentUser.email,
  iOS: {
    bundleId: 'com.example.ios'
  },
  android: {
    packageName: 'com.example.android',
    installApp: true,
    minimumVersion: '12'
  },
  handleCodeInApp: true,
  // When multiple custom dynamic link domains are defined, specify which
  // one to use.
  dynamicLinkDomain: "example.page.link"
};
firebase.auth().currentUser.sendEmailVerification(actionCodeSettings)
  .then(function() {
    // Verification email sent.
  })
  .catch(function(error) {
    // Error occurred. Inspect error.code.
  });

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ć w pliku AndroidManifest.xml filtr intencji dla precyzyjnego linku.
    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). Aby to zrobić, ustaw wartość handleCodeInApp na false w obiekcie firebase.auth.ActionCodeSettings. Chociaż identyfikator pakietu na iOS i nazwa pakietu na Androida nie są wymagane, po wypełnieniu kodu e-mail 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 android.installApp możesz też określić, że dana 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 firebase.auth.ActionCodeSettings. Trzeba też podać nazwę pakietu aplikacji mobilnej na Androida lub identyfikator pakietu 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.