2011-01-19 3 views
1

J'ai intégré le graphique api facebook connect mais si nous nous connectons à facebook, nous nous connecterons automatiquement au site avec facebook connect ainsi. Est-il possible de laisser l'utilisateur clique sur fb "Login" seulement alors l'utilisateur est connecté au site avec son compte fb?Facebook Connect désactiver la connexion automatique

Maintenant, l'utilisateur se connecte automatiquement au site sans avoir la possibilité de choisir s'il souhaite utiliser son compte facebook. S'ils veulent se déconnecter du site, ils doivent se déconnecter complètement de Facebook seulement alors ils peuvent se déconnecter du site avec Facebook Connect.

Est-ce que quelqu'un peut m'aider ou donner des conseils? Merci!

Répondre

3

J'ai eu ce même problème sur un site Web récent, et j'ai trouvé un moyen de le surmonter. Ma solution permettait à un utilisateur d'être déjà connecté sur son ordinateur, mais pas de se connecter automatiquement sur mon site, puis de se connecter avec le bouton Facebook et finalement, quand il se déconnecte, il ne se déconnecte pas de Facebook sur son ordinateur , juste sur mon site web (un peu comme Digg le fait avec facebook).

Pour ce faire, j'utilisais https://github.com/facebook/php-sdk/ pour vérifier dans PHP s'il y avait une session facebook active avec l'utilisateur et le site web (ce qui provoquerait la connexion automatique). S'il y avait, je ne l'écho le code de connexion automatique:

FB.init({ 
     appId : '<?php echo $facebook->getAppId(); ?>', 
     session : <?php echo json_encode($session); ?>, // don't refetch the session when PHP already has it 
     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.login', function() { 
     window.location = "process-login.php"; 
    }); 

mais simplement rendre mon propre bouton de connexion facebook qui pointent vers « processus login.php ». Process-login.php définirait la variable $ _SESSION personnalisée qui indiquait que mon site Web était connecté (que ce soit via mon propre système ou via facebook), puis rechargerait la page de référence (en utilisant $ _SERVER ['HTTP_REFERER']) qui afficherait maintenant l'utilisateur comme connecté via Facebook puisque ma propre variable $ _SESSION était maintenant définie. Pour les déconnecter (sans les déconnecter complètement de Facebook, juste mon site web), je voudrais juste charger un script de déconnexion qui a supprimé la variable $ _SESSION. L'exemple.php (dans php-sdk sur github) a été très utile pour trouver ma solution, même si j'ai dû la personnaliser de façon significative pour qu'elle fonctionne avec mon système existant. Cela m'a au moins aidé à voir comment accéder à la variable de session facebook en PHP (stockée dans $ moi dans l'exemple).

Espérons que cela vous aide si c'est toujours un problème, ou que cela aide quelqu'un d'autre dans cette situation.

EDIT: Il s'avère que j'ai toujours eu quelques problèmes avec la connexion automatique à la rare occasion. Pour résoudre ce problème, j'ai supprimé event.subscribe ('auth.login') et créé un bouton facebook qui appelait la fonction suivante pour vérifier l'état de la connexion avant de s'abonner au fichier auth.login. Voici la fonction:

function check_login_session(){ 
     FB.getLoginStatus(function(r){ 
      if(r.session){ 
       window.location = '/process-login.php'; 
      } 
      else{ 
       FB.Event.subscribe('auth.login', function(response) { 
        window.location = '/process-login.php'; 
       }); 
       FB.login(); 
      } 
     }); 
    }` 
0

bonjour je crois que vous avez fait votre question si confuse. Votre question ne dit pas ce que vous voulez réellement. Comme je l'ai compris, je pense que vous voulez connecter l'utilisateur à votre site via Facebook Connect et vous voulez quand l'utilisateur clique sur la déconnexion facebook, il se déconnecte automatiquement de votre site. Si ma compréhension de votre question est bonne, laissez simplement l'utilisateur se connecter via Facebook et se connecter à votre système dans l'événement FB.Event.Subscribe. Utilisez le code suivant pour le bouton de connexion

 
<fb:login-button perms='email' autologoutlink='true'> 

Lorsque l'utilisateur permettra à votre son compte facebook pour vous connecter avec votre site

 
<div id="fb-root"> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({appId: "Your APP ID", 
      status: true, 
      cookie: true, 
      xfbml: true}); 
    FB.getLoginStatus(function(response) { 
     if (response.session) { 
     // Send here parameters that logins to your system through your website login system 

     } else { 

    } 
    });  
    FB.Event.subscribe("auth.login", function(response) { 
    window.location.reload(); 
     }); 
FB.Event.subscribe("auth.logout", function(response) { 
    window.location.reload(); 

    //Send the Parameters that logouts user from your website through your website logout system; 
     }); 
     }; 
    (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); 
    }()); 


    

et mettre tout le code ci-dessus juste après votre corps <> tag

+0

et désolé si je ne suis pas arrivé à votre problème :-) –

+0

Bonjour, merci beaucoup pour votre réponse. Désolé si ma question est confuse. En fait, je veux désactiver la connexion automatique à la my quand un utilisateur se connecte à son compte facebook. Actuellement, pour ceux qui se connectent à leur facebook, ils vont automatiquement se connecter à mon site :(Je veux que l'utilisateur ait la possibilité de le faire ou pas. :) – Sylph

+0

bien maintenant compris. Eh bien, j'ai également intégré facebook dans un site de musique. J'ai aussi le même problème. Mais je pense que lorsque vous vous connectez avec facebook, le cookie facebook est enregistré dans votre navigateur. Lorsque votre site se charge, il vérifie que le navigateur a le cookie facebook ou la session, il se connecte automatiquement. Je n'ai pas trouvé de solution. –

0

Si vous avez:

FB.Event.subscribe('auth.login', function() { 
    fbLogin(this); 
}); 

Essayez de le commenter/* fb.Event ..... */

1

J'ai eu la même problème, je suppose que vous utilisez les scripts fournis par facebook. Dans ce cas, vous avez une fonction associée à l'événement window.fbAsyncInit. Cela arrive à chaque fois que la page est chargée. A la fin de cette méthode, vous avez le code:

FB.getLoginStatus(function(response) { statusChangeCallback(response); });

La fonction statusChangeCallback vérifie le statut facebook de votre utilisateur (connecté, autorisé ou inconnu). Ici, si l'utilisateur est "connecté", vous le connectez sur votre site. Eh bien c'est le problème, vous essayez toujours de connecter l'utilisateur avec Facebook.

Cela ne doit se produire sur un clic, vous devez donc effacer ces lignes