Symfony2 + Facebook API:无法检索会话对象

时间:2015-03-11 16:11:28

标签: javascript php facebook symfony facebook-graph-api

我尝试在我的Symfony2应用程序中集成FB功能。

我有一个base.html.twig,我初始化了javascript facebook api:

<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : '{{ fb_appid }}',
      xfbml      : false,
      version    : 'v2.1'
    });

    FB.getLoginStatus(function(response) {
      statusChangeCallback(response);
    });
  };

  (function(d, s, id){
     var js, fjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement(s); js.id = id;
     js.src = "//connect.facebook.net/de_DE/sdk.js";
     fjs.parentNode.insertBefore(js, fjs);
   }(document, 'script', 'facebook-jssdk'));
</script>

然后,在我的DefaultController.php中,我想要检索会话,之后是当前登录用户的facebook id:

use Facebook\FacebookSession;
use Facebook\FacebookRequest; 
use Facebook\FacebookJavaScriptLoginHelper;

/**
 * @Route("/overview", name="_overview")
 * @Template()
 */
public function overviewAction()
{
    $helper = new FacebookJavaScriptLoginHelper();
    try {
      $session = $helper->getSession();
    } catch(FacebookRequestException $ex) {
      // When Facebook returns an error
        echo $ex."<br>";
    } catch(\Exception $ex) {
      // When validation fails or other local issues
        echo $ex."<br>";
    }
    if ($session) {
      // Logged in
        echo "some";
    }else{
        echo "none";
    }
}

我得到的只是“无”。

我不知道为什么我没有会话,因为javascript方法给了我“连接”状态..所以用户登录到Facebook并允许我的应用程序。

请问有人帮我一点,因为这不应该是一项艰巨的任务吗?!在此先感谢:)

1 个答案:

答案 0 :(得分:0)

好的我自己发现:我必须在Fb.init()上配置cookie和状态

  window.fbAsyncInit = function() {
    FB.init({
      appId      : '{{ fb_appid }}',
      xfbml      : false,
      version    : 'v2.1',
      cookie     : true,
      status     : true
    });