web-dev-qa-db-fra.com

Facebook JS API ne peut pas se déconnecter

J'ai un site Web localhost et un script avec FB.logout(). Après quelques actions, il ne parvient pas à me déconnecter et je vois le message d'erreur suivant dans la console:

Refused to display 'https://www.facebook.com/home.php' in a frame because it set 'X-Frame-  Options' to 'DENY'.

J'ai cherché dans tout StackOverflow et je n'ai trouvé aucune solution qui fonctionne. L'inspecteur de réseau affiche la requête annulée près de home.php.
Je comprends donc que le script essaie de charger la page d’accueil de Facebook dans un cadre, mais il ne le peut pas parce que cela est interdit. Alors, comment puis-je résoudre ce problème? Pourquoi logout() ne fonctionne-t-il pas pour moi?

Mon code

// Facebook Basic Example

window.fbAsyncInit = function() {
  FB.init({
    appId      : '579651098766258',
    status     : true, // check login status
    cookie     : true, // enable cookies to allow the server to access the session
    xfbml      : true  // parse XFBML
  });

  FB.Event.subscribe('auth.authResponseChange', function(response) {
    if (response.status === 'connected') {
      testAPI();
    } else if (response.status === 'not_authorized') {
      FB.login();
    } else {
      FB.login();
    }
  });
};

(function(d){
 var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
 if (d.getElementById(id)) {return;}
 js = d.createElement('script'); js.id = id; js.async = true;
 js.src = "//connect.facebook.net/en_US/all.js";
 ref.parentNode.insertBefore(js, ref);
}(document));



function testAPI() {
  FB.api('/me', function(res) {
    console.log(res);
    setTimeout(function(){
      FB.logout(); // <-- ERROR
    }, 2000);
  });
}
24
Enthusiast

Cette solution a fonctionné pour moi:

  1. Allez dans l'onglet Paramètres de votre application facebook et dans l'onglet Basique défilez jusqu'à + Ajouter une plateforme.
  2. Cliquez sur + Ajouter une plate-forme et choisissez le site Web.
  3. Ajoutez votre URL de votre site Web (pour moi, la même URL a-t-elle été ajoutée sous l'onglet Avancé de la redirection d'URI)
  4. Enregistrez les modifications et testez à nouveau.

Aussi, j’ai fait une vidéo sur youtube pour résoudre ce problème: https://www.youtube.com/watch?v=7CNpLgwa0-c

enter image description here

34
SoldierCorp

Pour que cela fonctionne, je devais définir le champ "Domaines de l'application" dans l'onglet Paramètres du panneau de configuration de Facebook: 

 enter image description here

8
vivanov

Je ne sais pas à quoi ressemble votre code HTML, mais pour moi, cela a fonctionné avec mon bouton de déconnexion:

onclick="javascript:FB.logout(function() { window.location.reload() }); return false;"

J'espère que cela va aider quelqu'un, au moins cela résout mon problème.

2
colin

Mise à jour pour 2018

Dans le tableau de bord de l'application, sous le produit de connexion Facebook, cliquez sur Démarrage rapide et suivez les instructions. L'appel d'API de déconnexion devrait commencer à fonctionner!

Remarque: J'ai sélectionné WWW et saisi http://localhost:5757/ dans l'URL du site.

1
Shane Davies

J'ai trouvé qu'avec www . Example.com j'obtiens cette erreur et sans le www (example.com), il n'y a pas d'erreur ...

0
Milk Man