2011-04-10 34 views
2

這是我的場景。當用戶打開瀏覽器並前往facebook.com登錄時,我希望能夠檢測到並啓動我的Facebook應用程序登錄過程。如何檢測用戶是否登錄Facebook?

這可能嗎?我問,因爲我注意到登錄到Facebook本身並沒有讓我的應用程序自動登錄,這是不好的。

我更喜歡JavaScript客戶端代碼。

+0

FBJS是用於FBML的JavaScript API,已棄用而支持圖API。你可以在這裏閱讀關於新的JavaScript SDK:http://developers.facebook.com/docs/reference/javascript/ – Aleadam 2011-04-10 05:47:27

+0

感謝您的答案,我已經嘗試了上述基於事件的處理,但似乎沒有工作。 我還閱讀了邁克爾指出的JavaScript文檔,以下段落令人興奮,但也令人困惑。 「Facebook JavaScript SDK允許您通過允許用戶通過他們的Facebook帳戶登錄到您的網站來刪除用戶註冊和登錄,這可以通過在http:// www之間共享登錄用戶狀態來實現。 facebook.com/和您的網站。只要用戶登錄到Facebook,Facebook用戶仍然登錄到您的網站。「 因爲根據我的觀察。通過共享登錄用戶狀態**登錄int – user776635 2011-04-10 06:20:31

+0

**完全是你想要的,對嗎?除了由於不正確的剪切和粘貼而導致我的示例出現了一些錯誤(我正在刪除我自己的應用程序的非相關部分),該示例是正確的。現在這些是固定的:我測試了它,它按預期工作。該示例只是重新加載頁面,但您可以很好地使用iframe。 – Aleadam 2011-04-10 07:04:32

回答

0

有許多Facebook圖片,只有當你登錄Facebook時才能看到。您可以讓用戶嘗試加載其中一個圖像,然後檢測它是否加載。這是一個總竅門。

+0

嗯。這非常棘手。可能不會這樣做。 – boots 2011-04-10 05:35:04

2
+0

嗯,我一直認爲這是當你通過一個FB應用程序登錄。而不是通過facebook.com直接登錄 – boots 2011-04-10 05:38:07

+0

我知道•即使會話在外部發生更改時,auth.sessionChange也能正常工作,所以我猜auth.login也能正常工作。 – 2011-04-10 05:41:08

5

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> 
相關問題