2012-02-12 64 views
0

我試圖開發一個新的FB應用程序,但它似乎已經改變了他們的方式再次。我正在尋找正確的方式來驗證我的應用程序的fb用戶,並檢索用戶標識。Facebook驗證/請求用戶標識

我發現下面的方法:

// Authenticate the user 
session_start(); 
if(isset($_REQUEST["code"])) { 
    $code = $_REQUEST["code"]; 
} 

if(empty($code) && !isset($_REQUEST['error'])) { 
$_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection 
$dialog_url = 'https://www.facebook.com/dialog/oauth?' 
    . 'client_id=' . $app_id 
    . '&redirect_uri=' . urlencode($app_url) 
    . '&state=' . $_SESSION['state'] 
    . '&scope=publish_actions'; 

print(''); 
exit; 

我的問題是現在。 我不需要facebook SDK嗎?由於它不需要在這裏即時通訊認爲它根本不需要。 正確的方法是將此代碼放在我的所有文檔的頂部,從而不斷確保用戶被授權?

謝謝

回答

0

也許你正在尋找this

它需要像這樣:

<div id="fb-root"></div> 
<script>(function(d, s, id) { 
     var js, fjs = d.getElementsByTagName(s)[0]; 
     if (d.getElementById(id)) return; 
     js = d.createElement(s); js.id = id; 
     js.src = "http://connect.facebook.net/de_DE/all.js#xfbml=1&appId=<YOUR_APP_ID>"; 
     fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 
</script> 
+0

謝謝您的回覆。 不太清楚我應該如何使用該功能,雖然 – JPJens 2012-02-12 14:31:36

+0

與鏈接的東西,你可以檢查你的訪客的狀態。把它放在頁面加載後處理的一些js腳本中。 (即onLoad()正文) 其他的東西放在html文件的正文結束標記 – helle 2012-02-12 14:36:30

+0

我在調用FB.Init(並添加警報到每個狀態)後嘗試以下,但即時通訊沒有得到任何腳本錯誤或通知從警報,所以我懷疑我缺少的東西:http://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/ – JPJens 2012-02-12 14:44:24

2

正確不再有需要的SDK。 Facebook試圖讓開發人員使用他們的Graph API,這就是爲什麼他們不再支持他們所有的舊垃圾代碼,以及爲什麼FBML將在六月份停止工作等。

使用此頁面來圍繞新的API:http://developers.facebook.com/tools/explorer/

沒有「正確的方法」。您可以做任何您需要做的事情來滿足您的網站需求,如果這意味着設置令牌cookie並緩存20分鐘的身份驗證請求,而不是強制用戶在每個請求中檢查Facebook上的令牌,那取決於您。

+0

謝謝,幫助了很多。如此難以置信地難以在這個世界找到答案;) 你知道是否有辦法檢查用戶是否仍然在facebook框架內。 我試圖避免用戶打開新的框架,將顯示Facebook框架外的應用程序。 – JPJens 2012-02-12 14:25:35

+0

抱歉,這是不可能的,因爲Facebook是在不同的域名。您通常會使用'top.location.href'作爲同域父窗口URL訪問權限。 – AlienWebguy 2012-02-12 16:05:33