Firebase $ authWithOAuthRedirect no llama a $ onAuth sin actualizar la página

Tengo un simple inicio de sesión de Firebase Facebook OAuth establecido como a continuación siguiendo eltutorial oficial para el inicio de sesión de Ionic Firebase en Facebook.

El problema es que una vez que hago clic en el botón de inicio de sesión con Facebook, me redirigen a Facebook, me conecto y me vuelven a dirigir a mi aplicación. Sin embargo, el problema es que me quedo en la página de inicio de sesión. Lo extraño es que si actualizo físicamente mi navegador (probando conionic serve) presionando F5 elonAuth desencadena y me redirige a laItems página. Si no actualizo el navegador,onAuth No se llama.

¿Alguien tuvo este problema? ¿Cómo lo resolviste?

Tenga en cuenta que sí, hice mi investigación (y estoy empezando a perderla un poco), pero no puedo hacer que funcione. Busqué SO, probé con$ tiempo de espera de los grupos de google, traté de llamar a $ scope. $ apply (), pero todo fue en vano, así que, ¿me ayudarán a averiguar dónde lo estoy haciendo mal?

.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>

editar: Lo resolví usando $ 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);

Sin embargo, esto simplemente se siente mal (en pocas palabras), y tiene que haber una mejor manera, así que sugiérale una. Además, noté que la demora de 3 segundos apenas es suficiente (pocos de los recursos que encontré sugirieron que 500 ms serían suficientes, pero en mi caso, ese no es el caso).

Respuestas a la pregunta(2)

Su respuesta a la pregunta