web-dev-qa-db-fra.com

API Facebook Graph: FB.login () appelé avant d'appeler FB.init ()

J'essaie d'utiliser la nouvelle API Facebook Graph sur mon site Web. Voici ce que j'ai:

Quelque part sur la page:

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

Juste après le tag:

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

mais quand je clique sur le bouton de connexion généré, rien ne se passe.

De plus, je reçois

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

dans la console Firebug.

Des idées?

25
sabbour

Je ne peux pas le croire, je faisais référence à une clé non existante dans le Web.config donc FB.init échouait silencieusement.

Cela fonctionne comme prévu maintenant.

Pour être plus clair Je ne passais pas l'appId à FB.init, une fois que je l'ai fait, cela a fonctionné.

44
sabbour

Eu le même problème, voici la solution qui a fonctionné pour moi. Mettez simplement ce qui suit dans votre section de tête ou en d'autres termes, ajoutez le app_id à la source du facebook js.

<script src="//connect.facebook.net/en_US/all.js&appId=xxxxxxxxxxxxxxx" type="text/javascript"></script>

3
Robot Boy

Dans mon cas, le problème a disparu après avoir désactivé la fonctionnalité XFBML (c'est-à-dire en définissant la clé xfbml sur false, en supprimant le fb: espace de noms et #xfbml=1 fragment dans <script src="…">). Heureusement que je n'en avais pas besoin de toute façon.

YMMV, il existe plusieurs autres raisons valables pour lesquelles ce message d'erreur peut apparaître.

2
scy