2012-05-02 63 views
1

我正在網站上工作,在這個網站中我想將facebook登錄與我的網站登錄系統集成在一起。我已經在代碼中集成了facebook-php-sdk。登錄功能正常工作。下面是我有問題的要點...使用facebook-php-sdk登錄和註銷問題

  1. 一旦註銷並點擊登錄Facebook登錄屏幕未打開。
  2. 註銷並刷新頁面後,登錄deatils將再次顯示。登錄按鈕消失。
  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.一旦註銷並刷新頁面,登錄deatils將再次顯示。登錄按鈕消失。

與上述問題相同的原因。

3.如果上述兩點都解決了,那麼如何通過網站維護登錄會話呢?

維護會話中的fb id,以及何時登出的請求刪除cookie並銷燬會話。

+0

是的!這工作 –