FB.getLoginStatus ne déclenche jamais la fonction de rappel dans le SDK JavaScript de Facebook
Les chose simple de l'appel de FB.init
(juste avant </body>
) et puis FB.getLoginStatus(callback)
ne pas le feu à la fonction de rappel.
Après un peu de débogage, je pense que le SDK est coincé dans le "chargement" (c'est à dire FB.Auth._loadState == 'loading'
) de phase et n'arrive jamais à "chargé", de sorte que tous les rappels sont mis en file d'attente jusqu'à ce que le kit de développement a chargé.
Si je force-le-feu "chargé" de l'événement au cours du débogage avec FB.Event.fire('FB.loginStatus', 'loaded')
dans le cas où vous êtes interessé - alors que les rappels sont invoqués correctement.
Détails supplémentaires qui pourraient être utiles:
- Mon application est un facebook iframe app (chargé au moyen de apps.facebook.com/myapp)
- Je suis sur IE9. Le même comportement se produit dans Chrome
- L'application est hébergée dans http://localhost
Ce qu'il se passe? Pourquoi le SDK n'arrive jamais à charger?
Grâce
Mise à JOUR: Juste essayé sur Chrome et ça a fonctionné (je ne sais pas pourquoi ça ne marchait pas avant). Ne fonctionne toujours pas sous IE
source d'informationauteur Dan | 2011-04-21
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce même problème dans Firefox 3.5 sur Windows, mais seulement sur le premier journal à la page (probablement parce que c'était une machine plus lente et il y avait d'étranges problèmes de synchronisation).
Je l'ai corrigé en forçant FB pour actualiser l'état de connexion cookie à chaque fois qu'il vérifie:
Sans "force=true", parfois, il ne serait pas le feu à la fonction de rappel.
J'ai eu exactement le même problème, et je l'ai résolu la désactivation de "Navigation Sécurisée" dans l'Facebook paramètres de Sécurité. Assurer la sécurité de la Navigation sur les forces de pages comme "https", mais je n'avais pas "Sécurisé Toile URL" mis en place, et cela m'a donné beaucoup d'erreurs dans la console.
Espérant que cela puisse aider quelqu'un 🙂
Dans mon expérience, getLoginStatus() n'appelle jamais le rappel dans Firefox quand les cookies tiers sont désactivés.
L'affiche originale a mentionné son application est hébergée sur http://localhost. Je n'ai jamais eu de chance avec ça, et crois qu'il va causer des problèmes.
Juste aujourd'hui, j'ai eu des problèmes là où getLoginStatus n'est pas l'appel de la fonction de rappel sur n'importe quel navigateur, sauf si l'utilisateur est actuellement connecté à l'app! J'espère que c'est un bug sur facebook la fin qu'ils vont résoudre.
J'ai aussi rencontré ce problème spécifiquement dans google Chrome. J'ai essayé de l'appeler au chargement de la page et après une initiative de l'utilisateur de l'action, sans succès.
Il s'est avéré que ce n'était pas un problème de domaines. Le getLoginStatus() appel a été bloqué par la de l'Onu-Passwordise extension dans Chrome. Dès que j'ai désactivé l'extension, cela a fonctionné parfaitement, même au chargement de la page.
Plus d'informations sur cette question ici: Chrome-seulement cross-domain scripting tre dans Facebook iFrame App sur FB.Login(..)
Encore une autre possibilité pour FB.getLoginStatus pas de tir de son rappel est lors de l'utilisation d'un "test" compte d'utilisateur qui n'a pas été autorisé à consulter cette application. Son assez mauvais que facebook ne vous donne pas tous les messages d'erreur.
J'ai également vu échoué rappels sur la mauvaise appIds et redirectUrls.
Je comprends que cette question est un peu vieux maintenant, mais j'ai couru à travers elle à la recherche de solutions.
Double-vérifier que vous avez configuré dans votre Facebook configuration de l'application dans la section "Site web avec Facebook Login". L'URL du Site de domaine doit correspondre au domaine de votre page avec le FB.getLoginStatus (et autres auth Javascript) est servi à partir de.
Après des heures de galère, j'ai réalisé que je ne pourrais pas réutiliser une configuration de l'application que j'ai eu sur un nouveau serveur et a dû créer une nouvelle application pour gérer la connexion au site internet pour ce nouveau serveur.
Autres réponses sont probablement tout aussi valable dans votre cas particulier, mais depuis il y a peut être d'autres comme moi qui ont lutté pendant un certain temps sur ce, j'espère que cela vous donne un autre endroit pour vérifier. La fabrication d'une nouvelle application avec la bonne URL du Site a été la réponse à mon cas particulier.