¿Por qué mi aplicación FB se repite para siempre en IE?

Tengo una aplicación de Facebook que se repite para siempre cuando se ejecuta en IE. En otros navegadores funciona bien.

Necesito su ayuda para depurar esto, pero antes de eso necesito mencionar cómo lo he implementado.

FB recomienda que cuando el usuario intente acceder a la aplicación, deberíamos redirigirlo a la página de autorización de la aplicación. A partir de ahí, FB redirigirá (usando el código 302) a una url que nos guste. En este caso, le pido a FB que redirija a la URL de mi aplicación con una banderaappLogin=1 en la cadena de consulta. Pero junto con ese FB adjunta un parámetro muy largocode en la cadena de consulta que es bastante fea. Entonces, en este caso puse una banderaLoggedIn en mi sesión PHP y redirigir al usuario a la url de la aplicación usando un código JSwindow.top.location.href = <app url>. Esto limpia la URL en la barra de ubicación.

Esto funciona bien en Firefox y Chrome, pero en IELoggedInalta la bandera @ de la sesión después de que el código redirige desdeappLogin etapa. De hecho, parece que la sesión PHP se ha restablecido en este caso. Esto confunde a mi aplicación al creer que se trata de una solicitud inicial, por lo que redirige al usuario a la página de autorización.

Espero que lo anterior tenga sentido. Realmente aprecio cualquier idea.

Actualización1:

De acuerdo a lo pedido. Aquí va el fragmento de código.

$reset = false;
$topRedirect = true;

if (isset($_REQUEST['appLogin'])) {
    resetSession();
}
session_start();

$facebook = new Facebook(array(
  'appId' => $AppId,
  'secret' => $AppSecret,
  'cookie' => true,
));

if (isset($_REQUEST['appLogin'])) {//Comes here when appLogin is set, i.e. we have just been redirected here from OAuth (authorization) page.

    if (isset($_REQUEST['error'])) {
        if ($_REQUEST['error_reason'] === 'user_denied') {
            $msg = "You need to click on 'Allow', so that this App can fetch the data needed.";
            $allowRetry = true;
            include('error.php');
        }
    }

    $authToken = $facebook->getUserAccessToken(); //This was originally protected. Made public for my purpose.
    if ($authToken === false) {
        //If no user token found and it wasn't even an error then this is totally unexpected.
        $msg = "Totally unexpected error occurred!";
        $allowRetry = true;
        logErr($msg);
        include('error.php');
    }

    $_SESSION['LoggedIn'] = 1;
    $reset = false;
    $url = $AppUrl; //We redirect again to clean the url.
    include('redirect.php');
} else {
    if (!isset($_SESSION['LoggedIn']) || $facebook->getUserAccessToken() === false) {
        //If we are here then this is an initial request.
        $reset = false;
        $url = $OAuthUrl;
        include('redirect.php');
    }
}

$accessToken = $facebook->getAccessToken();

Actualización2:

Los archivos incluidos: redirect.php y error.php invokeexit() cuando se realiza su procesamiento. Entonces el código después de ellos no se ejecutará.

Respuestas a la pregunta(2)

Su respuesta a la pregunta