2012-05-02 65 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

是的!这工作 –