API de Facebook Graph: FB.login () llamado antes de llamar a FB.init ()

Estoy tratando de usar la nueva API Graph de Facebook en mi sitio web. Esto es lo que tengo:

En algún lugar de la página:

<fb:login-button autologoutlink="true" perms="email,user_birthday,status_update,publish_stream"></fb:login-button>

Justo después de la etiqueta:

<div id="fb-root">
    </div>
    <script type="text/javascript">
        window.fbAsyncInit = function () {
            FB.init({ appId: '<%= ConfigurationManager.AppSettings["FBAppId"] %>', status: true, cookie: true, xfbml: true });

            /* All the events registered */
            FB.Event.subscribe('auth.login', function (response) {
                // do something with response
                alert("login success");
            });
            FB.Event.subscribe('auth.logout', function (response) {
                // do something with response
                alert("logout success");
            });

            FB.getLoginStatus(function (response) {
                if (response.session) {
                    // logged in and connected user, someone you know
                    alert("login success");
                }
            });
        };
        (function () {
            var e = document.createElement('script');
            e.type = 'text/javascript';
            e.src = document.location.protocol +
            '//connect.facebook.net/en_US/all.js';
            e.async = true;
            document.getElementById('fb-root').appendChild(e);
        } ());
    </script>

pero cuando hago clic en el botón de inicio de sesión generado, no sucede nada.

Además, me estoy poniendo

FB.getLoginStatus() called before calling FB.init().

en la consola Firebug.

¿Algunas ideas?

Respuestas a la pregunta(3)

Su respuesta a la pregunta