2011-04-29 159 views
8

我在我的主頁上有標準的Facebook登錄按鈕,我不希望人們用他們的Facebook帳戶自動登錄我的網站,只有當用戶點擊登錄按鈕。點擊Facebook登錄按鈕後重定向,即使已經登錄Facebook

如果用戶未登錄Facebook,會彈出對話框,詢問他的憑據,然後他將被重定向到loggedin.html

<div id="fb-root"></div> 
<fb:login-button perms="email"></fb:login-button> 

<script> 
    window.fbAsyncInit = function() { 
     FB.init({ 
      appId : 'xxxxxxxxxxxx', 
      status : true, 
      cookie : true, 
      xfbml : true 
     }); 

     FB.Event.subscribe('auth.login', function() { 
      window.location = "loggedin.html"; 
     }); 
    }; 

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

如果用戶已經登錄Facebook,當他點擊按鈕時彈出窗口出現並立即消失,我對此表示滿意。但用戶沒有重定向到loggedin.html。我怎樣才能做到這一點 ?

回答

1

如果您使用的PHP SDK,您可以使用下面的代碼:

require_once 'path/to/facebook.php'; 
define('A_ID', '*YOUR APP ID*'); 
define('A_SECRET', 'YOUR APP SECRET'); 

$facebook = new Facebook(array('appId' => A_ID, 'secret' => A_SECRET, 'cookie' => true)); 
$userId = $facebook->getUser(); 

if (!$userId): 
    ?> 
    <!-- HTML to show if the $userId isn't available (user isn't logged in) --> 
    <?php 
else: 
    ?> 
    <!-- HTML to show if the $userId is available (user is logged in)--> 
    <?php 
endif; 

理想情況下,你應該爲它可以讓你的數據和方式更多的控制使用PHP SDK它顯示,比使用JS SDK插入數據。

的Facebook擁有的PHP SDK這裏的參考:developers.facebook.com/docs/reference/php/

中的JavaScript SDK參考這裏:developers.facebook.com/docs/reference/javascript/