我試圖建立什麼本質上是使用Facebook Login日誌使用戶登錄到網站。用戶可以使用JavaScript SDK(如文檔中所建議的)登錄,然後我需要在服務器端獲取用戶詳細信息,以便我可以爲用戶在數據庫中存儲日記條目(使用Facebook用戶標識來標識用戶)。我正嘗試使用getJavaScriptHelper()
在PHP SDK v5中執行此操作。Facebook的PHP SDK v5訪問令牌/工作流程
我對如何正確處理/存儲訪問令牌有些困惑。到目前爲止,我有這個(我已經削減了簡潔try
/catch
位):(?可能會失效的問題)
$fb = new Facebook\Facebook([
'app_id' => $APP_ID,
'app_secret' => $APP_SECRET,
'default_graph_version' => 'v2.5',
]);
$helper = $fb->getJavaScriptHelper();
$accessToken = $helper->getAccessToken();
if (isset($accessToken)) {
$oAuth2Client = $fb->getOAuth2Client();
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
$fb->setDefaultAccessToken($longLivedAccessToken);
$response = $fb->get('/me');
$userNode = $response->getGraphUser();
$name = $userNode->getName();
echo $name;
}
這似乎直到我離開這個頁面一會兒做工精細,回來刷新這一頁;當我這樣做時,我發現一個This authorization code has expired.
異常已被拋出。
我的問題是這樣的:我怎樣才能避免這個問題,並確保通過getLongLivedAccessToken()
獲得的訪問令牌真的是最後的"about 60 days"文檔引用?我需要將訪問令牌存儲在會話/ Cookie /數據庫中嗎?
我不知道我理解你的答案。你似乎做了一些有點奇怪的事情,比如檢查是否存在'$ _SESSION ['fb_token']'和'$ _GET ['code']',然後從不讀取它們的值。它也看起來像這個代碼使用'getRedirectLoginHelper'而不是'getJavaScriptHelper'。 (並且有一個小類型 - esle)。 – Phil
對不起,不解釋我的回答,我會爲它添加解釋 –