2012-05-18 67 views
0

我在Facebook的畫布應用有效的安全我的web服務(這是一個Flash應用程序),所有Facebook的調用從客戶端(JS SDK)來完成,我已經建立了一個PHP網頁服務在我的服務器上存儲和讀取我的數據庫中的數據,所以目前基本上我沒有使用Facebook的PHP SDK。被稱爲不存在活躍的Facebook會話

什麼是從被稱爲不存在活躍的Facebook會話的安全性我的web服務的最簡單方法?


UPDATE:工作了,保羅的答案是正確的,感謝@保羅。

問題很簡單:初始化JS sdk是在php會話開始後完成的,因此對我的php文件的進一步調用未被識別爲已登錄。爲了使其工作,我初始化了嵌入swf(現在是Html,現在是php),這意味着在swf甚至被加載之前,處理尚未授權應用程序的用戶是通過php完成的。 現在,我可以依靠我的網絡服務中的活動會話和用戶標識,現在咖啡口味更好。

回答

0

我不認爲有這樣做沒有檢查出FB訪問令牌是有效的一個非常好的途徑。

如果我是你,我會使用SDK來驗證會話。這是超級好用剛剛從here抓住它,並嘗試下面的代碼:

<?php 
require 'php-sdk/src/facebook.php'; 

$facebook = new Facebook(array(
    'appId' => 'YOUR_APP_ID', 
    'secret' => 'YOUR_APP_SECRET', 
)); 

// See if there is a user from a cookie 
$user = $facebook->getUser(); 

if ($user) { 
    // you have a secure session 
} 
+0

感謝保羅,我試圖只是這...然而,$ facebook->的getUser()總是返回0 - 由於沒有活動會話(我有一個Facebook應用程序實例,因爲我可以獲得應用程序access_token) - 任何想法? – adifmac

+0

是否有用戶明確登錄Facebook並授權您的應用程序?他們必須遵循此頁面上的流程:http://developers.facebook.com/docs/guides/web/#login –

+0

是的,用戶已登錄並授權應用程序。 但是,用戶不應直接加載此「頁面」,它是Flash的「Web服務」 - 保存並加載數據,它會返回JSON對象。基本上,如果它是由flash(以及將來的移動應用程序)調用的,則它是登錄用戶的「安全」調用。這正是問題 - 我如何才能限制只有當前登錄到我的Facebook應用的用戶才能訪問此「Web服務」? – adifmac