2011-03-14 69 views
1

我使用Facebook的PHP SDK和我存儲會話時...貯藏的Facebook會話數據

if ($session = $facebook->getSession()) { 
    mysql_query("UPDATE fb_session SET app_session = '" . addslashes(serialize($session)) . "' WHERE user_id = " . $uid); 
} 

用戶登錄我有一個cron腳本運行使用Facebook的API經由用戶:

$facebook->setSession(unserialize($row['app_session']), false); 

將腳本設置爲正確的用戶。

問題是,當用戶註銷Facebook時,會話不再有效並要求他們再次登錄。我有一個cron腳本,因此無需用戶交互即可解決問題。

我的意思是要存儲不同的東西?

回答

2

你想做什麼?

如果您只想代表用戶發佈,那麼只需詢問publish_stream權限並將用戶標識存儲在您的數據庫中。
之後,您可以發佈而不需要「獲得會話」(即沒有0​​)。

如果你想要做其他任務,然後AQUIRE的offline_access權限和access_token在你的數據庫中的用戶ID一起,並從一個安全問題也執行任務,而不setSession

+0

擱置會使用setSession通過發送訪問令牌是任何不同的,即會話過期和訪問令牌沒有超時? – fire 2011-03-15 11:02:00

+0

我不知道你在問什麼,但正如我所說...如果你只需要「發佈」,那麼你只需要'publish_stream'和用戶ID,所以有效的會話或訪問令牌。現在,您需要'offline_access' ** AND **來存儲'access_token' + USER_ID的其他內容,檢索到的訪問令牌不會超時,並且**無需檢查是否設置會話是否已過期! – ifaour 2011-03-15 13:20:25

0

是的,當用戶連接到您的應用程序時,您需要請求offline_access權限,這會使您永久而不是臨時訪問令牌。