2011-07-14 39 views
1

我正在开发一个Facebook应用程序。我正在使用Sessions和cookies,并且一切正常。突然IE8在使用Cookie方面存在一些错误。它阻止了我的网站,因为它在iframe中。所以我开始了解P3P标题。我正确使用并解决了问题。但是,如果cookie不可用,客户端现在希望我使用GET。我正在这样做,但现在我面临的问题是,Facebook PHP Sdk在会话中遇到问题。它的getSession方法没有获取会话并重定向来验证用户,然后重定向回应用程序。但是在这一切中,它都会丢失GET变量PHPSESSID。以下是有一些东西类似的stackoverflow的线程,所以可能是你们以下是有帮助的。 Facebook PHP SDK getSession() fails to get session. Cookie problem?PHP会话与GET有问题的IE8和Facebook应用程序

这是曾经有GET会话如果Cookie不可代码:

ini_set('session.use_cookies_only', false); 
ini_set('session.use_trans_sid', true); 

session_start(); 

这是访问FB的代码。与PHP Sdk会议。:

 $facebook = new Facebook(array(
    'appId' => FACEBOOK_APPID, 
    'secret' => FACEBOOK_SECRET, 
    'cookie' => true, 
    )); 
    $this->facebook=$facebook; 

    // We may or may not have this data based on a $_GET or $_COOKIE based session. 
    // If we get a session here, it means we found a correctly signed session using 
    // the Application Secret only Facebook and the Application know. We dont know 
    // if it is still valid until we make an API call using the session. A session 
    // can become invalid if it has already expired (should not be getting the 
    // session back in this case) or if the user logged out of Facebook. 
    $this->session = $facebook->getSession(); 

请告诉你是否可以给我任何线索。

感谢大家

回答

1

这似乎是与Facebook API一个永无止境的问题。会话功能随机断开,你可以做很多事情。我通常在我的应用程序中做的是禁用cookie并将facebook会话存储在我自己的应用程序SESSION中。每个请求都有一个父控制器,它负责检查SESSION。如果找到有效的SESSION,它将被设置为Facebook的会话对象。这确保了在调用getSession()时将返回有效的会话。

+0

实际上,如果我使用Cookie进行会话,它可以正常使用Facebook应用程序,而当我使用GET而不是Cookie来使用会话时,这是问题,这是因为客户端需要该应用程序。如果IE浏览器在某些未知的情况下不接受cookies,则可以使用。 Howevera非常感谢你的帮助,如果我找不到更好的解决方案,我会考虑这种方式,因为我认为我也可以第一次接触到我的会话,因为它是第一次接受fb。 Cookie和基于GET的会话问题从第二次开始。 – Hafiz

+0

你是对的,在你的地方,在这个背景下,而我的问题实际上是Kohana会议的问题,因为我已经想通了。请同时尝试在那里帮助我,我也在stackoverflow上提出了这个问题,并邀请你在你的linkedin上解决这个问题。并感谢在这个问题上的帮助。 – Hafiz