如何在Symfony2中启用会话


How to enable session in Symfony2?

如何在Symfony2中启用会话?我想使用Facebook登录,但我得到错误信息:会话不活跃,无法存储状态。(500内部服务器错误- FacebookSDKException).

我代码:

FacebookSession::setDefaultApplication(APP_ID, APP_SECRET);
$helper = new FacebookRedirectLoginHelper(REDIRECT_URL, $appId = NULL, $appSecret = NULL);
echo '<a href="' . $helper->getLoginUrl() . '">Login with Facebook</a> | ';
try {
    $session = $helper->getSessionFromRedirect();
} catch (FacebookRequestException $ex) {
    echo "{ FacebookRequestException }";
} catch (Exception $ex) {
    echo "{ Exception: }";
}
echo ( isset( $session ) ) ? "{ OK! }" : "{ NOPE }";

app/config/config.yml中,在framework部分下,必须有一个session项:

framework:
    # ...
    session: ~

查看官方文档以了解如何配置会话存储:http://symfony.com/doc/current/reference/configuration/framework.html#session

看起来我找到了解决方案,我在你的代码之前在我的控制器中写了这个:

public function indexAction() {
    $session = $this->get('session');
    $session->start();
    $url = $this->get('fb_provider')->getLoginUrl(); //my service, here execute your code

但是这让我很困惑

如果你想创建facebook提供商,使用这个bundle:

https://github.com/hwi/HWIOAuthBundle

它提供简单的访问Facebook和其他36个提供商(谷歌,Twitter)。

这个包的安装非常快。

你也应该对这个bundle感兴趣:https://github.com/FriendsOfSymfony/FOSUserBundle