這是我的場景。當用戶打開瀏覽器並前往facebook.com登錄時,我希望能夠檢測到並啓動我的Facebook應用程序登錄過程。如何檢測用戶是否登錄Facebook?
這可能嗎?我問,因爲我注意到登錄到Facebook本身並沒有讓我的應用程序自動登錄,這是不好的。
我更喜歡JavaScript客戶端代碼。
這是我的場景。當用戶打開瀏覽器並前往facebook.com登錄時,我希望能夠檢測到並啓動我的Facebook應用程序登錄過程。如何檢測用戶是否登錄Facebook?
這可能嗎?我問,因爲我注意到登錄到Facebook本身並沒有讓我的應用程序自動登錄,這是不好的。
我更喜歡JavaScript客戶端代碼。
有許多Facebook圖片,只有當你登錄Facebook時才能看到。您可以讓用戶嘗試加載其中一個圖像,然後檢測它是否加載。這是一個總竅門。
嗯。這非常棘手。可能不會這樣做。 – boots 2011-04-10 05:35:04
您可以訂閱auth.login事件。 http://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe/
嗯,我一直認爲這是當你通過一個FB應用程序登錄。而不是通過facebook.com直接登錄 – boots 2011-04-10 05:38:07
我知道•即使會話在外部發生更改時,auth.sessionChange也能正常工作,所以我猜auth.login也能正常工作。 – 2011-04-10 05:41:08
UPDATE:這裏有一個完全工作例子。您需要做的唯一一件事就是替換APP_ID,用於在登錄您的應用程序時獲得的任何ID:http://www.facebook.com/developers/以及您可能用於本地主機測試的端口。這會檢測用戶何時登錄,即使在另一個瀏覽器窗口中。這顯然是非常基本的,但證明了使用圖API的工具是可行的。
您可以添加以下代碼,以檢測當用戶登錄這是相同的OAuth登錄上<fb:login-button>
或記錄用戶點擊直接到facebook.com是否:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Hello App Engine</title>
<SCRIPT type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></SCRIPT>
</head>
<body>
<h1>Hello!</h1>
<div id="fb-root"></div>
<script type="text/javascript">
FB.init({
appId : APP_ID,
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
/*
* Authentication functions
*/
FB.Event.subscribe('auth.login', function (response) {
welcomeMsg(response);
});
FB.Event.subscribe('auth.logout', function (response) {
alert ("Good bye!");
});
if (FB.getSession() != null) {
FB.api('/me', function(response){
console.log(response.name);
welcomeMsg(response);
})
} else {
window.setTimeout(function(){window.location.href="http://localhost:8888"},5000);
}
function welcomeMsg(userData) {
console.log ("Welcome " + userData.name);
}
</script>
</body>
</html>
FBJS是用於FBML的JavaScript API,已棄用而支持圖API。你可以在這裏閱讀關於新的JavaScript SDK:http://developers.facebook.com/docs/reference/javascript/ – Aleadam 2011-04-10 05:47:27
感謝您的答案,我已經嘗試了上述基於事件的處理,但似乎沒有工作。 我還閱讀了邁克爾指出的JavaScript文檔,以下段落令人興奮,但也令人困惑。 「Facebook JavaScript SDK允許您通過允許用戶通過他們的Facebook帳戶登錄到您的網站來刪除用戶註冊和登錄,這可以通過在http:// www之間共享登錄用戶狀態來實現。 facebook.com/和您的網站。只要用戶登錄到Facebook,Facebook用戶仍然登錄到您的網站。「 因爲根據我的觀察。通過共享登錄用戶狀態**登錄int – user776635 2011-04-10 06:20:31
**完全是你想要的,對嗎?除了由於不正確的剪切和粘貼而導致我的示例出現了一些錯誤(我正在刪除我自己的應用程序的非相關部分),該示例是正確的。現在這些是固定的:我測試了它,它按預期工作。該示例只是重新加載頁面,但您可以很好地使用iframe。 – Aleadam 2011-04-10 07:04:32