Stan zaliczenia w działaniach e-maili

Podczas wysyłania e-maili z działaniami związanymi z resetowaniem hasła lub weryfikacją adresu e-mail użytkownika możesz przekazywać 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 z aplikacji mobilnej, gdy jest ona zainstalowana, zamiast ze 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 mógł jednak zapomnieć hasła i w związku z tym uruchomić proces resetowania hasła. Na końcu procesu użytkownik oczekuje powrotu do sekcji aplikacji, do której próbował uzyskać dostęp.

  • Aplikacja może oferować dostęp tylko do zweryfikowanych kont. Na przykład w przypadku newslettera użytkownik może musieć potwierdzić swój adres e-mail, zanim będzie mógł się zasubskrybować. Użytkownik przechodzi proces weryfikacji adresu e-mail i oczekuje, że po jego zakończeniu 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 zaawansowana funkcja uwierzytelniania Firebase, która może znacznie poprawić wrażenia użytkownika.

Przekazywanie stanu adresu URL dalszego działania w działaniach związanych z e-mailem

Aby bezpiecznie przekazać adres URL kontynuacji, domenę adresu URL należy dodać jako autoryzowaną domenę w Firebase konsoli. Aby to zrobić, w sekcji Uwierzytelnianie dodaj tę domenę do listy Autoryzowane domeny na karcie Metoda logowania, jeśli jeszcze jej tam nie ma.

Podczas wysyłania e-maila do zresetowania hasła lub e-maila weryfikacyjnego należy podać instancję firebase.auth.ActionCodeSettings. Ten interfejs przyjmuje te parametry:

Parametr Typ Opis
url ciąg znaków

Ustawia link (adres 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łania w internecie, 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 linku.
iOS ({bundleId: string}|undefined) Ustawia identyfikator pakietu iOS, aby pomóc Firebase Authentication określić, czy należy utworzyć link tylko do internetu czy link mobilny, który będzie otwierany na urządzeniu Apple.
android ({packageName: string, installApp:boolean|undefined, minimumVersion: string|undefined}|undefined) Ustawia nazwę pakietu Androida, aby pomóc Firebase Authentication określić, czy należy utworzyć link tylko do internetu czy link mobilny, który zostanie otwarty na urządzeniu z Androidem.
handleCodeInApp (wartość logiczna lub nieokreślona) Określa, czy link do działania w e-mailu zostanie najpierw otwarty w aplikacji mobilnej czy w internecie. Wartość domyślna to fałsz. Jeśli ma wartość „true”, link do kodu działania zostanie wysłany jako link uniwersalny lub link aplikacji na Androida i zostanie otwarty przez aplikację, jeśli jest zainstalowana. W przypadku wartości fałszywej kod zostanie najpierw wysłany do widżetu internetowego, a następnie po kliknięciu przycisku kontynuacji nastąpi przekierowanie do aplikacji, jeśli jest ona zainstalowana.
linkDomain (string|undefined) Jeśli dla projektu zdefiniowano niestandardowe domeny linków Hosting, określ, której z nich chcesz używać, gdy link ma być otwierany przez określoną aplikację mobilną. W przeciwnym razie automatycznie wybierana jest domyślna domena (np. PROJECT_ID.firebaseapp.com).
dynamicLinkDomain (string|undefined) Rola wycofana. Nie podawaj tego parametru.

Poniższy przykład pokazuje, jak wysłać link weryfikacyjny, który najpierw otworzy się w aplikacji mobilnej, korzystając z niestandardowej Hostingdomenycustom-domain.com. Precyzyjny link będzie zawierać ładunek adresu URL kontynuacjihttps://www.example.com/?email=user@example.com.

const actionCodeSettings = {
  url: 'https://www.example.com/?email=' + firebase.auth().currentUser.email,
  iOS: {
    bundleId: 'com.example.ios'
  },
  android: {
    packageName: 'com.example.android',
  },
  handleCodeInApp: true,
  // Specify a custom Hosting link domain to use. The domain must be
  // configured in Firebase Hosting and owned by the project.
  linkDomain: "custom-domain.com"
};
firebase.auth().currentUser.sendEmailVerification(actionCodeSettings)
  .then(function() {
    // Verification email sent.
  })
  .catch(function(error) {
    // Error occurred. Inspect error.code.
  });

Firebase Authentication używa Firebase Hosting podczas wysyłania linku, który ma być otwierany w aplikacji mobilnej. Aby korzystać z tej funkcji, musisz skonfigurować linki do hostingu w konsoli Firebase.

  1. Konfigurowanie aplikacji na Androida:

    1. Jeśli zamierzasz obsługiwać te linki w aplikacji na Androida, w ustawieniach projektu w Firebase konsoli musisz podać nazwę pakietu aplikacji. Dodatkowo należy 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 znajdziesz w instrukcjach dotyczących otrzymywania linków do hostingu Androida.
  2. Konfigurowanie aplikacji na iOS:

    1. Jeśli planujesz obsługiwać te linki w aplikacji na iOS, musisz skonfigurować domenę linku Hosting jako powiązaną domenę w funkcjach aplikacji.
    2. Więcej informacji znajdziesz w instrukcjach dotyczących otrzymywania linków do hostingu w iOS.

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

Możesz określić, czy chcesz najpierw obsłużyć link do kodu działania z aplikacji internetowej, a następnie przekierować użytkownika na inną stronę internetową lub do aplikacji mobilnej po pomyślnym zakończeniu działania, pod warunkiem że aplikacja mobilna jest dostępna. W tym celu ustaw wartość handleCodeInApp na false w obiekcie firebase.auth.ActionCodeSettings. Identyfikator pakietu na iOS lub nazwa pakietu na Androida nie są wymagane, ale ich podanie umożliwi użytkownikowi powrót do określonej aplikacji po wykonaniu działania w e-mailu.

Użyty tutaj adres URL to adres skonfigurowany w sekcji szablonów działań związanych z e-mailami. Domyślny jest udostępniany we wszystkich projektach. Więcej informacji o dostosowywaniu modułu obsługi działań e-mail znajdziesz w artykule Dostosowywanie modułów obsługi e-maili.

W tym przypadku link w parametrze zapytania continueUrl będzie linkiem do hostingu, którego ładunek jest wartością URL określoną 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ą applyActionCode, aby zmiana została wprowadzona, czyli adres e-mail został zweryfikowany.

Obsługa działań związanych z e-mailami w aplikacji mobilnej

Możesz określić, czy chcesz najpierw obsługiwać link do kodu działania w aplikacji mobilnej, pod warunkiem że jest ona zainstalowana. Jeśli link zostanie kliknięty na urządzeniu, które nie obsługuje aplikacji mobilnej, otworzy się strona internetowa. W tym celu ustaw wartość handleCodeInApp na true w obiekcie firebase.auth.ActionCodeSettings. Musisz też podać nazwę pakietu na Androida lub identyfikator pakietu iOS aplikacji mobilnej.

Gdy nie jest dostępna żadna aplikacja mobilna, używany jest awaryjny adres URL strony internetowej skonfigurowany w sekcji szablonów działań e-mail. Dla wszystkich projektów jest udostępniana domyślna pula. Więcej informacji o dostosowywaniu modułu obsługi działań e-mail znajdziesz w artykule Dostosowywanie modułów obsługi e-maili.

W tym przypadku link do aplikacji mobilnej wysłany do użytkownika będzie linkiem Hosting, którego ładunkiem jest skonfigurowany w Konsoli adres URL kodu działania z parametrami zapytania oobCode, mode, apiKeycontinueUrl. Będzie to pierwotna wartość URL określona w obiekcie ActionCodeSettings. Kod działania można zastosować bezpośrednio z aplikacji mobilnej, podobnie jak w przypadku przepływu internetowego opisanego w sekcji Dostosowywanie funkcji 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 została wprowadzona, czyli adres e-mail został zweryfikowany.