Сохранение состояния входа в Firebase Auth не работает - PullRequest
0 голосов
/ 24 июня 2018

В ионном / AngularJS / Cordova IOS приложении.

Я пытаюсь установить постоянный вход в систему с использованием почты / пароля (затем Firebase documentation: https://firebase.google.com/docs/auth/web/auth-state-persistence). Но я не могу понять,Что не так с моим кодом. Мое приложение запускается на странице входа в систему, когда пользователь нажимает кнопку «Connexion», он запускает функцию входа в систему.

Вход в систему работает, но когда яЯ закрываю приложение (без выхода из системы), перезагружаю его, я все еще на странице входа в систему. Логин не является постоянным.

Так что, я думаю, одной из проблем может быть неправильный вызов персистентности.... Это так? Согласно этому сообщению: Сопротивление сеанса Firebase 3.0 может иметь отношение к firebase.auth().onAuthStateChanged(function(user), но я не знаю ...

// EMAIL CONNEXION TRIGGERED WHEN CONNEXION BUTTON IS HIT

$scope.loginEmail = function($email, $password){
  
  firebase.auth().setPersistence(firebase.auth.Auth.Persistence.SESSION)
  .then(function() {
    var alertPopup;
    
    function signInSuccess(response) {
  
				$state.go("menu.VN");
    }

    function signInError(response) {
    
        var errorCode = null;
        errorCode = response.code;
        if ($email === ""){
             alertPopup = $ionicPopup.alert({
                    title: 'Something wrong...',
                    cssClass: 'pop',
                    template: '<div class="center-form">Need an email address...</div>'
                });   
        }
}

return firebase.auth().signInWithEmailAndPassword($email, $password)
  .then(signInSuccess)
  .catch(signInError);

     })
     .catch(function(error) {
    // Handle persistence Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
  });

};
<label>
          <span>Email</span>
          <input type="email" placeholder="" ng-model="data.email">
</label>

<label>
          <span>Password</span>
          <input type="password" placeholder="" ng-model="data.password">
</label>
    
<button ng-click="loginEmail(data.email, data.password )">Connexion</button>

1 Ответ

0 голосов
/ 25 июня 2018

Чтобы сохранить свое состояние, вы должны использовать firebase.auth.Auth.Persistence.LOCAL, а не firebase.auth.Auth.Persistence.SESSION.

Известны проблемы с localStorage в приложениях Cordova для iOS, которые являются нестабильными. Firebase Auth полагался на localStorage, но в последней версии используется более надежный indexedDB для сохранения состояния пользователя. Когда это недоступно, оно возвращается к localStorage. В этом случае вы можете использовать этот плагин Microsoft для indexedDB .

tldr; перейти на последнюю версию Firebase Auth и использовать плагин Cordova indexedDB, когда indexedDB недоступен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...