FB.getLoginStatus () appelé avant d'appeler FB.init () erreur dans la console

J'essaie de vérifier si un utilisateur est connecté avec mon application, mais je reçois un "

FB.getLoginStatus() appelé avant d'appeler FB.init() .

"Dans la console. Le setSize semble fonctionner (bien que pas tout à fait 1710 de hauteur, mais définitivement autour de 1500), donc je ne comprends pas pourquoi le getLoginStatus() donne l'erreur.

J'ai également vérifié avec l'appID (supprimé ci-dessous) et c'est certainement correct. Le script est inclus à droite en dessous de mon et div

 window.fbAsyncInit = function() { FB.init({ appId : 'APPID', // App ID status : true, // check login status cookie : true, // enable cookies to allow the server to access the session oauth : true, // enable OAuth 2.0 xfbml : true // parse XFBML }); FB.Canvas.setSize({width: 520, height: 1710}); FB.Canvas.setAutoResize(100); FB.getLoginStatus(function(response) { if (response.authResponse) { // logged in and connected user, someone you know alert("?"); } else { // no user session available, someone you dont know alert("asd"); } }); }; 

Vous devez charger l'api de façon asynchrone. Essayez de supprimer votre <script src="connect.facebook.net/en_US/all.js"></script> et de mettre à jour votre JS vers:

 <div id="fb-root"></div> <script> window.fbAsyncInit = function() { FB.init({ appId : 'YOUR_APP_ID', // App ID channelURL : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File status : true, // check login status cookie : true, // enable cookies to allow the server to access the session oauth : true, // enable OAuth 2.0 xfbml : true // parse XFBML }); // // All your canvas and getLogin stuff here // }; // Load the SDK Asynchronously (function(d){ var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} js = d.createElement('script'); js.id = id; js.async = true; js.src = "//connect.facebook.net/en_US/all.js"; d.getElementsByTagName('head')[0].appendChild(js); }(document)); </script> 

Oh, vérifiez la documentation !

Cette erreur se produira également si vous ne fournissez pas d'appId à FB.init. Exemple:

  FB.init({ appId: '' , channelUrl: '//domain/channel.html' , status: true , cookie: true }); 

Aura pour résultat:

FB.getLoginStatus () appelé avant d'appeler FB.init ().