我目前正在爲我的項目使用PHP Facebook SDK(http://github.com/facebook/php-sdk/)。我已經設置好了,用戶必須點擊一個鏈接才能訪問Facebook,Facebook會驗證用戶使用該應用程序,然後將會話詳細信息返回到我的網站,這很好。但是,我希望將這些會話詳細信息存儲在數據庫中,以便用戶登錄時可隨時訪問其帳戶中的信息。目前,如果用戶從Facebook註銷,然後嘗試從我的網站檢索信息,我會收到以下異常「OAuthInvalidTokenException:處理訪問令牌時出錯」。如果用戶在同一臺PC上登錄到Facebook,那麼就沒有問題。Facebook PHP SDK - 保持登錄狀態
有什麼我必須設置,或者是否有其他方式我應該執行此連接能夠檢索數據時,用戶沒有登錄?
我用得到的代碼/設置了Facebook會話:
require 'libraries/facebook/facebook.php';
// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => 'xxxx',
'secret' => 'xxxx',
));
$session = $facebook->getSession();
$me = null;
// Session based API call.
if ($session) {
//Save to database
} catch (FacebookApiException $e) {
error_log($e);
}
} else {
$loginUrl = $facebook->getLoginUrl();
header('Location: ' . $loginUrl);
}
有一次我保存從這一部分數據庫中的會話,我通過發佈系列化會議,這顯示數據庫中的數據:
$session = unserialize($_POST['session']);
require_once('libraries/facebook/facebook.php');
$facebook = new Facebook(array(
'appId' => 'xxxx',
'secret' => 'xxxx',
));
$facebook->setSession($session, false);
try {
$uid = $facebook->getUser();
// Do stuff
} catch (FacebookApiException $e) {
echo "<tr><td>" . $e . "</td>";
}
這裏有什麼明顯的錯誤嗎?或者我是否可以不使用此方法創建oAuth連接,以便在用戶未登錄時向用戶請求數據?
感謝,
丹
這個項目是使用Facebook Connect的第三方網站;桌面應用程序;或現場Facebook應用程序? – 2010-09-09 10:04:17
這是一個網站 - 不過在實驗中,我已經將應用程序的類型改爲「原生應用程序」,然後它提供了「保持登錄到xxx」的選項,可以打勾這是我正在尋找的! – Dan 2010-09-09 10:44:31
@Dan你在哪裏找到該複選框?我已經切換到「原生」,但我無法看到我的應用程序頁面上的任何地方的複選框:( – Chud37 2013-02-28 09:34:00