2012-10-03 29 views
0

的index.php:Facebook的API不會退出

blablabl 
<?php include("fb-api/****-api.php"); ?> 
blablabal 
    <?php if ($user): ?> 
     <a href="<?php echo $logoutUrl; ?>">Logout</a> 
    <?php else: ?> 
     <div> 
     <a href="<?php echo $loginUrl; ?>">Login with Facebook</a> 
     </div> 
    <?php endif ?> 

* * -api.php:

<?php 

require 'src/facebook.php'; 

// Create our Application instance (replace this with your appId and secret). 
$facebook = new Facebook(array(
    'appId' => '******', 
    'secret' => '***********', 
)); 
$user = $facebook->getUser(); 
    if ($user) { 
     $logoutUrl = $facebook->getLogoutUrl(); 
    } else { 
     $loginUrl = $facebook->getLoginUrl(); 
    } 

?> 

鏈接:http://music.x-game.info/ 好吧,我登錄沒有任何問題,但是當我按下退出鏈接它不退出我,任何想法?

回答

3

而不是使用facebook-> getlogouturl 將用戶重定向到另一個文件:logout.php ,包括這個:

<?php 
    $facebook->destroySession(); 
    session_destroy(); 
    ?> 
+0

這樣做。這工作。整個getLogoutUrl()不起作用。 –

+0

這是Facebook不允許*,因爲它不會將用戶從Facebook上簽名。根據政策I.6,'「您的網站必須提供明確的‘退出’選項,還註銷用戶的Facebook的。」'從https://developers.facebook.com/policy/取 – andrewtweber

1

註銷後,用戶將進入您的主頁並自動登錄,因爲$ user變量將被設置。

您可以使用數據庫來控制登錄/註銷。

+0

AHAM,我可以讓我的索引只檢查,如果用戶登錄,並如果不是不這樣做? –

+0

實際上,Facebook沒有登錄/註銷功能。如果有人進入運行$ user = $ facebook-> getUser()的頁面;代碼,$ user變量將始終設置。你必須使用一個數據庫,它可能是txt文件。 查看數據庫,如果用戶$ [「facebookid」]註銷,然後重定向到登錄頁面。 – tersakyan

0

將創建註銷URL時的redirect_uri設置爲http://yourdomain.tld/logout.php之類的內容。

在該腳本中,首先再次初始化Facebook SDK,將其稱爲destroySession方法,然後調用PHP自己的session_destroy

然後重定向到您的首頁或任何其他。