我正在使用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