【问题标题】:How to enable session in Symfony2?如何在 Symfony2 中启用会话?
【发布时间】:2014-08-12 14:09:23
【问题描述】:

如何在 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 }";

【问题讨论】:

    标签: php facebook symfony session


    【解决方案1】:

    app/config/config.ymlframework 部分下,您必须有一个session 项目:

    framework:
        # ...
        session: ~
    

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

    【讨论】:

    • 是的,我知道这个文档,但我不知道我应该设置什么。我从未见过任何示例代码。我可以要求一点提示吗?
    • 只需尝试默认配置(在我的回答中),它将根据您的 PHP ini 文件激活会话,并且足以继续。
    • 哦,所以我一直设置这个部分,但它仍然不起作用。
    • 我也有同样的问题。我已经打印了我使用 $this->get('session') 进入控制器的会话对象,但它仍然写道没有会话)
    【解决方案2】:

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

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

    但这让我很困惑

    【讨论】:

      【解决方案3】:

      如果您想创建 facebook 提供程序,请使用此捆绑包:

      https://github.com/hwi/HWIOAuthBundle

      它提供对 Facebook 和 36 个其他提供商(Google、Twitter)的简单访问。

      此捆绑包的安装速度非常快。

      您还应该对这个捆绑包感兴趣: https://github.com/FriendsOfSymfony/FOSUserBundle

      【讨论】:

        猜你喜欢
        • 2014-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多