2014-02-21 3 views
1

Я делаю вход и выход в facebook с веб-сайта. Поэтому, если пользователь хочет войти на сайт, он нажмет на facebook login, и когда он нажмет на выход, он автоматически выйдет из обеих сторон как с Facebook, так и с сайта. Так что все для этого я сделал свой код, как этот В index.html мой код, как этоfacebook выход из системы только выход из веб-сайта не из facebook?

<div id="fb-root"></div> 
<script type="text/javascript"> 
//<![CDATA[ 
window.fbAsyncInit = function() { 
    FB.init({ 
    appId  : 'XXXXXXXXXXXXX', // App ID 
    channelURL : '', // Channel File, not required so leave empty 
    status  : true, // check login status 
    cookie  : true, // enable cookies to allow the server to access the session 
    oauth  : true, // enable OAuth 2.0 
    xfbml  : false // parse XFBML 
    }); 
}; 
// logs the user in the application and facebook 
function login(){ 
FB.getLoginStatus(function(r){ 
    if(r.status === 'connected'){ 
      window.location.href = 'fbconnect.php'; 
    }else{ 
     FB.login(function(response) { 
       if(response.authResponse) { 
       //if (response.perms) 
        window.location.href = 'fbconnect.php'; 
      } else { 
       // user is not logged in 
      } 
    },{scope:'email'}); // which data to access from user profile 
} 
}); 
} 

// Load the SDK Asynchronously 
(function() { 
    var e = document.createElement('script'); e.async = true; 
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';     
    document.getElementById('fb-root').appendChild(e); 
}()); 

//]]> 
</script> 
<a href='#' onclick='login();'>Facebook Login</a> 

и fbconnect.php мой код, как этот

<?php 
    require 'src/facebook.php'; 
    $facebook = new Facebook(array(
      'appId' => 'XXXXXXXXXXXXXXXXX', 
      'secret' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 
      'cookie' => true, 
    )); 
    $user = $facebook->getUser(); 
    $loginUrl = $facebook->getLoginUrl(); 
    //echo "<a href='$loginUrl'>login</a>"; 

    $logoutUrl = $facebook->getLogoutUrl(); 
    //echo $loginUrl; 
    if($user){ 
     $_SESSION['user_info'] = $user; 
     $_SESSION['user_pro']= $facebook->api('/me'); 
     echo $_SESSION['user_pro']['first_name']; 
     echo $_SESSION['user_pro']['last_name']; 
     echo '<pre>'; 
     //print_r($_SESSION); 
     echo '</pre>'; 
    } 
    else{ 
     echo 'not logged in '; 
    } 
    echo "<a href='logout.php'>log out </a>" 
?> 

и в logout.php мой код выглядит так:

<?php 
require 'src/facebook.php'; //including the facebook php sdk 
$facebook = new Facebook(); 
$token = $facebook->getAccessToken(); 
$url = 'index.html'; 
$facebook->destroySession(); 
session_destroy(); 
header('Location: '.$url); 
?> 

Все это делает выход в систему, но он не выполняет выход из фейсбука. Так может кто-то любезно сказать мне, как сделать выход из обеих facebook и веб-сайта одновременно? Любая помощь и предложения будут весьма полезны. Благодаря

ответ

0

Dont'use любой перенаправлять <a href='logout.php'>log out </a>

нужно только на действия facebook сессии уничтожить

if(isset($_GET['action']) && $_GET['action'] === 'logout'){ 
     $facebook->destroySession(); 
    } 

Затем после того, как вы можете использовать свой сайт сессии уничтожить Для получения дополнительной информации: - PHP SDK - Facebook Logout

+0

Nope..это один не работает .. Я пробовал код в logout.php, как этот ' getAccessToken(); $ url = 'index.html'; if (isset ($ _ GET ['action']) && $ _GET ['action'] === 'logout') { $ facebook-> destroySession(); } header ('Местоположение:'. $ Url); ?> ' – NewUser

+0

попробуйте использовать в том же файле, чтобы не включать и не перенаправлять другой файл –

0

Да это не приведет к выходу из Facebook.

Я вижу, что вы используете JS SDK, поэтому вам нужно использовать JS API для выхода из системы. Вы можете сделать как

echo '<a href="#" onclick = "fb_logout();" >Logout </a>'; 

Вам нужно добавить следующую функцию JS, я вижу, U уже есть FB.login

<script> 
      function fb_logout(){ 
        if (FB.getAuthResponse()) { 
         FB.logout(function(){ 
          top.location.href = 'logout.php' 
         }); 
        }else{ 
         top.location.href = 'logout.php' 
        } 
      } 
</script> 

Убедитесь, что следующий JS в fbconnect.php файл так, чтобы вызывать функции FB Таким образом, полный код

<div id="fb-root"></div> 

<script type="text/javascript"> 

    window.fbAsyncInit = function() { 
    FB.init({appId: '<?php echo FACEBOOK_APP_ID ; ?>', status: true, cookie: true, oauth: true, 
      xfbml: true}); 
    }; 
    (function() { 
    var e = document.createElement('script'); e.async = true; 
    e.src = document.location.protocol + 
     '//connect.facebook.net/en_US/all.js'; 
    document.getElementById('fb-root').appendChild(e); 
    }()); 

function fb_logout(){ 
         if (FB.getAuthResponse()) { 
          FB.logout(function(){ 
           top.location.href = 'logout.php' 
          }); 
         }else{ 
          top.location.href = 'logout.php' 
         } 
       } 
</script> 

В файле logout.php вы можете обрабатывать код выхода из системы для вашего сайта.

Кроме того, для формирования выхода из системы с помощью PHP SDK вам нужно сделать, как

$params = array('next' => 'page after logout'); 

$logouturl = $facebook->getLogoutUrl($params); // $params is optional. 

<a href="<?php echo $logouturl; ?>"> Logout </a> 

Я хотел бы предложить использовать JS SDK для выхода из системы он работает точно и журналы из Facebook, а также.

+0

Я пробовал ваш код.Но в панели консоли браузера я получаю ошибку, как «Неиспользуемый ReferenceError: FB не определен» – NewUser

+0

hmm выглядит так: u не добавлял JS-код на fbconnect.php. Я обновил ответ. –

+0

все еще показывает ошибку в панели консоли, как 'Неподготовленный ReferenceError: FB не определен' Можете ли вы отредактировать свой ответ с моим кодом. – NewUser

Смежные вопросы