2016-05-31 19 views
6

Mam aplikację używającą Firebase jako zaplecza. Moja aplikacja implementuje interfejs API uwierzytelniania Firebase za pomocą prostego adresu e-mail i hasła do uwierzytelniania.Jak utrzymać sesję użytkownika po wyjściu z aplikacji w Firebase

Wszystko działa poprawnie, z wyjątkiem jednego problemu. Chciałbym utrzymać sesję użytkownika nawet po zamknięciu aplikacji przez użytkownika.

FIRAuth.auth()? CurrentUser? ma wszystkie właściwości użytkownika (np: uid, email, token itd. ...) dla bieżącego użytkownika, który działa świetnie. Problem, który zauważyłem, to FIRAuth.auth(). CurrentUser? nie jest trwałe. Po wyjściu z aplikacji i ponownym uruchomieniu zwraca wartość null.

Nie chcę pytać użytkownika za każdym razem, gdy otwiera aplikację, aby ponownie się zalogować. Czy istnieje sposób obejścia tego?

+1

Firebase automatycznie utrzymuje tokenu użytkownika w pęku kluczy iOS. Jest on automatycznie przywracany po ponownym uruchomieniu aplikacji. Możesz to monitorować za pomocą 'addAuthStateDidChangeListener' (zobacz [dokumentacja Firebase Authentcation] (https://firebase.google.com/docs/auth/ios/manage-users#get_the_currently_signed-in_user)). Jeśli to nie jest problem, opublikuj [minimalny kompletny kod, który odtwarza problem] (http://stackoverflow.com/help/mcve). –

Odpowiedz

23

Firebase powinien już rejestrować użytkownika za pomocą uruchamiania aplikacji.

Twój problem może dotyczyć bezpośredniego użycia zamiast zalecanego podejścia za pomocą metody FIRAuth.auth()?.currentUser?.

zalecany sposób, aby uzyskać bieżący użytkownik jest poprzez ustawienie słuchacza na obiekcie logowania:

FIRAuth.auth()?.addStateDidChangeListener { auth, user in 
    if let user = user { 
    // User is signed in. 
    } else { 
    // No user is signed in. 
    } 
} 

Stosując słuchacza, należy upewnić się, że obiekt Auth nie jest w sposób pośredni stan - na przykład inicjalizacja - po pobraniu bieżącego użytkownika .

W mojej aplikacji używam obu. Jeśli użytkownik nie istnieje z pierwszą metodą, przenosi się na drugą, a jeśli to się nie uda, pojawi się ekran logowania/rejestracji.

+1

Ah! Po prostu próbowałem tego podejścia i jesteś absolutnie poprawny. Pomyślałem, że czegoś mi brakuje. Dziękuję bardzo za odpowiedź. – Lavvo

+0

Gdzie należy umieścić to zastrzeżenie? Jeśli nie jesteś w viewcontrollerze logowania? –

+0

Gdziekolwiek chcesz. Wszędzie, gdzie potrzebujesz bieżącego użytkownika. Osobiście zawijam cały ten kod w moich własnych klasach. –

0

FirAuth został przemianowany Auth

Proszę korzystać z najnowszych Firebase Pod

Powiązane problemy