我正在使用laravel構建Facebook應用程序,並且在我的代碼中使用Redirect::to('thank_you')
在用戶提交表單後將用戶重定向到感謝頁面。重定向::到()清除Facebook訪問令牌
function submitForm() {
//Process input
//Done, now redirect to thank you page
Redirect::to('thank_you')
}
但是,在'thank_you'中,Facebook訪問令牌消失了。所以當我需要運行$facebook->api('/me')
時,它會拋出一個異常,表示需要一個有效的訪問令牌。
這讓我瘋狂!你有什麼建議嗎? (當前我正在將訪問令牌存儲在$ _SESSION ['user_token']中,但是當用戶註銷時這仍然有效,因此用戶無法在應用程序中註銷他的FB賬戶。客戶不希望任何網站上的註銷按鈕)
//Fix for invalid access tokens
if(!isset($_REQUEST['code']) && isset($_SESSION['accessToken'])) {
$this->facebook->setAccessToken($_SESSION['accessToken']);
}
//if the user has just done facebook login & auth
else if(isset($_REQUEST['code'])) {
$_SESSION['accessToken'] = $this->facebook->getAccessToken();
}
有什麼好解釋當然Laravel不使用'$ _SESSION'全球?據我所知,Symfony(Laravel的核心組件)清空變量,並將所有內容存儲在'Session'助手中?因此,你會使用'Session :: get()'來代替? – 2013-04-06 10:39:18
是的,這是我的舊代碼,我已經改爲使用Session類。但$ _SESSION實際上工作正常。但這不是我的觀點,因爲在會話中存儲訪問令牌的這種解決方案會造成用戶無法註銷的問題。 – 2013-04-06 10:50:36