无法从Facebook获得活跃会话

时间:2011-03-03 10:55:06

标签: php facebook codeigniter

我从以下代码中反复获取登录URL。

    $this->fb = new Facebook(array(
        'appId' => $this->CI->config->item('facebook_app_id'),
        'secret' => $this->CI->config->item('facebook_secret'),
        'cookie' => true,
    ));

    if (!$this->fb->getSession()){

        echo $this->fb->getLoginUrl();
    }

当我打印fb对象时,它会显示有效的api密钥和密钥。

我在从Firefox清除Cookie后尝试过。我还试图在Firefox的下一个选项卡中以exlusively注销然后从facebook帐户重新登录。但结果是一样的。

以上代码始终生成登录网址。

我注意到的另一件事是,用户只需登录并返回。没有应用批准消息/屏幕显示。在facebook上我的appliaction设置有什么问题吗?

有人可以指导我做错了什么以及如何纠正。

提前致谢

2 个答案:

答案 0 :(得分:1)

我喜欢使用JS SDK和PHP SDK来获得额外的功能。

window.fbAsyncInit = function() {
    FB.init({
      appId   : '<?php echo $this->appId ?>',
      session : <?php echo json_encode($this->fb->getSession()); ?>, // don't refetch the session when PHP already has it
      status  : true, // check login status
      cookie  : true, // enable cookies to allow the server to access the session
      xfbml   : true // parse XFBML
    });

(function() {
    var e = document.createElement('script');
    e.src = document.location.protocol + '//connect.facebook.net/es_ES/all.js';
    e.async = true;
    document.getElementById('fb-root').appendChild(e);
  }());

然后,将此函数分配给您要打开登录和权限对话框的任何链接或按钮(我使用的是jQuery和带有.fbConnect类的链接):

$(".fbConnect").click(function() {
          FB.login(function(response) {
            window.location.reload();
          }, {perms: 'user_photos,user_photo_video_tags,email,publish_stream'});
        });

请注意,权限是在perms对象中指定的。重新加载时,会话应该可供PHP SDK使用。

另外,请确保您使用的是您在应用配置中指定的相同网址,否则无效。

答案 1 :(得分:0)

如果用户帐户允许您的应用程序连接,您将只获得有效会话。

你做到了吗?最简单的方法是使用Facebook提供的login button