【发布时间】:2013-04-06 10:03:24
【问题描述】:
我正在使用 laravel 构建一个 Facebook 应用,并在我的代码中使用 Redirect::to('thank_you') 在用户提交表单后将其重定向到感谢页面。
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()吗? -
是的,这是我的旧代码,我已经将其更改为使用 Session 类。但 $_SESSION 实际上工作得很好。但这不是我的意思,因为这种将访问令牌存储在会话中的解决方案会产生用户无法注销的问题。
标签: php facebook facebook-php-sdk laravel