2012-05-01 2 views
3

J'ai essayé d'obtenir mon site Web pour vérifier si l'utilisateur est connecté au chargement de la page, mais je n'ai pas réussi à le faire fonctionner malgré les instructions de l'API, voici un exemple:Facebook API: vérifier si l'utilisateur est connecté sur se connecter

<!DOCTYPE html> 
    <html> 
     <head> 
      <title>My Facebook Login Page</title> 
     </head> 
     <body> 
      <div id="fb-root"></div> 
      <script> 
       alert('hello'); 
       window.fbAsyncInit = function() { 
        FB.init({ 
         appId : 'APP_ID', 
         status : true, 
         cookie : true, 
         xfbml : true, 
         oauth : true 
        }); 

        FB.getLoginStatus(function(response) { 
         console.log(response); 
         alert('hello2'); 
        }); 

        FB.Event.subscribe('auth.statusChange', function(response) { 
         alert('hello2'); 
        }); 

        FB.Event.unsubscribe('auth.statusChange'); 
       }; 
       (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> 
     </body> 
    </html> 

l'alerte est jamais touché à moins que l'utilisateur est connecté, s'il est déconnecté, cette alerte ou tout ce qui serait à l'intérieur de ce bloc de code déclenche jamais.

Répondre

0

Dans votre exemple, supprimer au-dessus de la virgule de fin (OAuth: true,) // qui pourrait bien être de copier/coller mais que vous voulez éliminer tout Gotchas

Pour le débogage, la journalisation de la console est ma méthode préférée mais puisque vous Vous ne voyez même pas d'alertes, votre situation est un peu difficile.

FB.Event.subscribe("auth.statusChange", function(response) { 
    console.log(response); 
}); 

FB.Event.unsubscribe("auth.statusChange"); 
// If you were to get subscribe to work, think about unsubscribing at some point to, since most likely that's only for an initial check 

Vous pouvez également utiliser getLoginStatus au lieu de l'abonnement d'événement.

FB.getLoginStatus(function(response) { 
    console.log(response); 
}); 

réponse devrait vous donner un objet et vous pouvez vérifier response.status et ses valeurs possibles sont: connecté, not_authorized ou inconnu response.authResponse comprendra des propriétés telles que: accessToken, expiresIn, etc.

+0

Parfois, le auth.statusChange L'événement ne se déclenche pas et je pense que cela est dû à la latence du réseau ou aux délais d'attente du serveur. J'ai trouvé que travailler avec FB nécessite d'être flexible avec des charges de pages qui ne "travaillent" pas dans 100% des cas. Une actualisation peut déclencher l'événement correctement. –

+0

D'accord, je viens de réaliser que cela fonctionne UNIQUEMENT SI l'utilisateur est connecté à facebook (avec application ou sans application) Est-il possible de vérifier si l'utilisateur est déconnecté ou le statut d'un utilisateur déconnecté? Je pense que getLoginStatus devrait vérifier si l'utilisateur est déconnecté mais ce n'est pas le cas, seulement s'il a autorisé l'application. J'ai pris votre suggestion de getLoginStatus mais cela ne semble toujours pas fonctionner. – Ven

+0

Hmm .. votre réponse devrait retourner un objet comme celui-ci: {authResponse: null, status: "unknown"} –

Questions connexes