2012-05-02 23 views
1

私はウェブサイトのログインシステムとFacebookのログインを統合したいウェブサイトに取り組んでいます。私はコードにfacebook-php-sdkを統合しました。ログイン機能は正常に動作します。以下は私が発行しているポイントです...facebook-php-sdkを使用したログインとログアウトの問題

  1. ログアウトしてログインをクリックすると、Facebookのログイン画面が開きません。
  2. 一度ログアウトしてページを更新すると、ログイン画面が再び表示されます。ログインボタンが消えます。
  3. 上記の2つの点が解決したら、ウェブサイトからログインセッションを維持する方法はありますか?

私は以下のコードを使用しました。

require 'src/facebook.php'; 

    $facebook = new Facebook(array(
     'appId' => YOUR_APP_ID, 
     'secret' => SECRET_KEY, 
    )); 

    session_start(); 



    if($_REQUEST['msg'] == 'logout'){ 
     setcookie('fbsr_'.$facebook->getAppId(), '', (time() - 3600), '/', 'domain.com'); 
     $sts = $facebook->destroySession();   
     session_destroy(); 
     header("Location: index.php"); 
     //echo '<meta http-equiv="refresh" content="2;url=index.php">'; 
    } 

    $userId = $facebook->getUser(); 
    if ($userId && !isset($_SESSION['fbdata'])) { 
     $_SESSION['fbdata'] = array("userid" => $userId);  
    } 

<?php if ($userId) { 
     $userInfo = $facebook->api('/' + $userId); ?> 
     Welcome <?= $userInfo['name'] ?> 
    <?php } else { ?> 
     <div id="fb-root"></div> 
     <fb:login-button></fb:login-button> 
    <?php } ?> 
     <script type="text/javascript"> 
      window.fbAsyncInit = function() { 
       FB.init({ 
        appId  : '<?= YOUR_APP_ID ?>', 
        status  : true, 
        cookie  : true, 
        xfbml  : true, 
        oauth  : true, 
       }); 

       FB.Event.subscribe('auth.login', 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/en_US/all.js"; 
       d.getElementsByTagName('head')[0].appendChild(js); 
      }(document)); 
     </script> 
     <br /> 
     <br /> 
     <a href="<?php echo $_SERVER['PHP_SELF']."?msg=logout"; ?>">Logout</a> 
+0

こんにちはすべて、私はここで誰もこの問題の答えを見たことがありません。もし誰か知っているなら、これに答えてください。ありがとうございました。 – Sachin

答えて

2

私の質問に答えが見つかりました。 1.ログアウトしてログインをクリックすると、Facebookのログイン画面が開きません。

FacebookのCookieが削除されていないか、またはスタジオから削除されていないとも言えます。このために私はそれが私のために働くのJavaScript

  
    function removeCookie( name, path, domain) { 

     if (getCookie(name)) 

     { 

      document.cookie = name + '=' + ((path) ? ';path=' + path : '') + ((domain) ? ';domain=' + domain : '') + ';expires=Thu, 01-Jan-1970 00:00:01 GMT'; 

     } 

    } 

の下に、これを使用しています。

2.ログアウトしてページを更新すると、ログイン画面が再び表示されます。ログインボタンが消えます。

上記と同じ理由です。上記二点3.Ifは

ウェブサイトからログインセッションを通じ維持するために、どのようにして解決しますか!

セッションでFB IDを維持し、要求がログアウトのために来たときにクッキーを削除し、セッションを破壊します。

+0

はい!これは動作します –

関連する問題