Firebase $ authWithOAuthRedirect не вызывает $ onAuth без обновления страницы

У меня есть простой логин OAuth для Firebase, как показано ниже,официальный учебник для входа в Ionic Firebase на Facebook.

Проблема заключается в том, что, как только я нажимаю на кнопку «Войти через Facebook», меня перенаправляют на Facebook, я вхожу в систему и возвращаюсь обратно в свое приложение. Однако проблема в том, что я остаюсь на странице входа. Странно то, что если я физически обновлю свой браузер (тестирование сionic serve) нажав F5onAuth триггеры и я перенаправлен наItems стр. Если я не обновлю браузер,onAuth не вызывается.

У кого-то была эта проблема? Как ты это решил?

Обратите внимание, что да, я провел исследование (и немного начинаю его терять), но не могу заставить его работать. Я искал ТАК, пробовал с$ таймаут из групп Google, пытался вызвать $ scope. $ apply (), но все безрезультатно - поэтому, пожалуйста, помогите мне понять, где я делаю это неправильно?

.controller('AppCtrl', function($scope, Items, Auth, $state, $ionicHistory) {
    $scope.login = function(provider) {
        Auth.$authWithOAuthRedirect(provider).then(function(authData) {

        }).catch(function(error) {
            if (error.code === "TRANSPORT_UNAVAILABLE") {
                Auth.$authWithOAuthPopup(provider).then(function(authData) {
                    
                });
            } else {
                console.log(error);
            }
        });
    };

    $scope.logout = function() {
        Auth.$unauth();
        $scope.authData = null;

        $window.location.reload(true);
    };

    Auth.$onAuth(function(authData) {
        if (authData === null) {
            console.log("Not logged in yet");
            $state.go('app.login');
        } else {
            console.log("Logged in as", authData.uid);
            
            $ionicHistory.nextViewOptions({
                disableBack: true
              });
            $state.go('app.items');
        }
        $scope.authData = authData; // This will display the user's name in our view
    });
})
<ion-view view-title="Members area">
    <ion-content padding="true">
        <div ng-if="!authData">
            <button class="button button-positive button-block" ng-click="login('facebook')">Log In with Facebook</button>  
        </div>       
        
        <div ng-if="authData.facebook">
            <div class="card">
                <div class="item item-text-wrap">Hello {{authData.facebook.displayName}}!</div>                
            </div>

            <button class="button button-assertive button-block" ng-click="logout()">Log out</button>
        </div>        

    </ion-content>
</ion-view>

редактировать: Я вроде решил это с помощью $ timeout:

$timeout(function(){
    Auth.$onAuth(function(authData) {
        if (authData === null) {
            console.log("Not logged in yet");
            $state.go('app.login');
        } else {
            console.log("Logged in as", authData.uid);

            $ionicHistory.nextViewOptions({
                disableBack: true
              });
            $state.go('app.items');
        }
        $scope.authData = authData; // This will display the user's name in our view
    });
}, 3000);

Тем не менее, это просто неправильно (мягко говоря), и должен быть лучший способ, поэтому, пожалуйста, предложите один. Кроме того, я заметил, что колоссальная 3-секундная задержка едва достаточна (немного ресурсов, которые я нашел, предположили, что 500 мс будет достаточно, но в моем случае это не так).

Ответы на вопрос(2)

Ваш ответ на вопрос