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:
|
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.
});
Konfigurowanie linków Firebase Hosting
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.
Konfigurowanie aplikacji na Androida:
- 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.
- Musisz też skonfigurować filtr intencji dla precyzyjnego linku w pliku
AndroidManifest.xml
. - Więcej informacji znajdziesz w instrukcjach dotyczących otrzymywania linków do hostingu Androida.
Konfigurowanie aplikacji na iOS:
- Jeśli planujesz obsługiwać te linki w aplikacji na iOS, musisz skonfigurować domenę linku Hosting jako powiązaną domenę w funkcjach aplikacji.
- 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
, apiKey
i continueUrl
. 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.