使用facebook-php-sdk登录和注销问题

时间:2012-05-02 08:42:43

标签: facebook

我正在网站上工作,我希望将facebook登录与我的网站登录系统集成。我已经在代码中集成了facebook-php-sdk。登录功能正常。以下是我发布的要点......

  1. 退出并点击登录后,Facebook登录屏幕无法打开。
  2. 注销并刷新页面后,将再次显示登录deatils。登录按钮消失。
  3. 如果上述两点将解决,那么如何通过网站维护登录会话?
  4. 对于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>
    

1 个答案:

答案 0 :(得分:2)

我在下面的问题中找到了答案。 1.一旦注销并点击登录,facebook登录界面就不会打开。

  
    

Facebook Cookie未被删除,或者我们可以说没有从starage中删除。为此我在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并销毁会话时。