2012-02-14 21 views
3

Facebook Connectプラグインに関する深刻な問題があります。 私はユーザーがウェブサイトにログインできるようにこの機能を使用しようとしています。Facebook-connect:PHP SDK + JS SDKを使用してログアウトできません

私は、JS SDKを混合したphp SDKで与えられた例を基本として使用しました。

ユーザーのログインを管理することに成功しましたが、ログアウトできません。私は怒っている、私は理解していない...それはちょうど動作しません...

後で私はセッションのPHP変数でフェイスブックセッションを使用するので、ログアウトする必要がありますセッションとクッキー。ちょうどここで私

助けることができる私のコードです:読書のための

 <? 
//uses the PHP SDK. Download from https://github.com/facebook/php-sdk 
require 'src/facebook.php'; 
$facebook = new Facebook(array(
    'appId' => 'ddddd', 
    'secret' => 'ddddddddddddddd', 
)); 

$userId = $facebook->getUser(); 

?> 
<?php if ($userId) { 
     $userInfo = $facebook->api('/' + $userId); 
     $params = array('next' => 'http://www.nofrenchtouch.com/include/logout.php'); 
     $logout = $facebook->getlogoutURL($params);?> 

     <span class="facebook-in">Bienvenue <?= $userInfo['name']?> - <a href="#" onClick="logoutUser(); return false;" class="facebook-bt"> Se déconnecter</a> 
</span> 
    <?php } else { ?> 
    <div id="fb-root"></div> 
    <a href="#" class="facebook-bt" onClick="loginUser(); return false;">Se connecter avec Facebook</a> 
    <?php } ?> 


<script> 
      window.fbAsyncInit = function() { 
     FB.init({ 
      appId: '<?php echo $facebook->getAppID() ?>', 
      cookie: true, 
      xfbml: true, 
      oauth: true 
     }); 
     FB.Event.subscribe('auth.login', function(response) { 
      window.location.reload(); 
     }); 
     FB.Event.subscribe('auth.logout', function(response) { 
      window.location.reload(); 
     }); 
     }; 
     (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/fr_FR/all.js"; 
     d.getElementsByTagName('head')[0].appendChild(js); 
     }(document)); 

     function loginUser() {  
    FB.login(
     function(response) { 
      getStatus(); //This is a call to a different function... 
     }, 
    {scope:'email,publish_stream, user_birthday, friends_birthday'} 
    ); 

    function logoutUser() {  
    FB.logout(
     function(response) { 
     } 
    ); 
} 
</script> 

おかげで多くのことを。

+1

あなたはどこでPHPセッションを破壊していますか? – DMCS

答えて

0

FB.logout();はFacebookからユーザーをログアウトします。 Facebookからのログアウトは、本質的にサーバーとのセッションを終了しますが、それは達成しようとしていることではないと思います。それにもかかわらず、私は次のコードは、Facebookのからログアウトのために働くことを発見した:

<a href="javascript:FB.logout();void(0)">Log Out</a> 

、ユーザーが自分のアカウントにアプリケーションの権限を付与すると、JS SDKが自動的にサーバーにユーザーに関するセッション情報を渡しますページがロードされるたびにあなたのユーザーがログアウトできるようにするには、ログインして自由にログインできる独自の認証システムを作成する必要があります。 JS SDKが作成するものとは別の独自のセッションハッシュやその他のものを使用します。 Facebook PHP SDKを使用して、あなたのユーザに関する情報を取得し、データベースに保存してください。これにより、ユーザーはあなたのウェブサイトからログアウトすることができます(Facebook JS SDKが実際にはまだ接続されていても)。必要に応じて、ユーザーアカウントシステムに関する詳細情報を提供することができます。

+0

ありがとうございました。 :-) –

+0

ようこそ。 – wecsam

0

フェイスブックからログアウトするときに、セッションとユーザーのCookieを削除します。

function logoutUser() {  
    FB.logout(
     function(response) { 
//Pass control to function in php where you can destroy your session and cookies. 
// windows.location=PHP function 
     } 
    ); 
関連する問題