Facebook iFrame canvas app PHP会话问题

Dom*_*man 5 safari iframe session internet-explorer facebook

我已经在最后一天半研究了一个问题,现在还没有找到解决方案.

当我在Facebook上访问我的游戏时(在facebook的iFrame中),php会话无效.这适用于IE和Safari.Chrome工作正常.

我已经阅读了有关此问题的堆栈上的所有帖子,这似乎取决于第三方cookie安全性,并且需要首先与iFrame进行交互.有一种解决方法是让javascript首先将一些表单数据发布到iFrame,但这似乎已经在最近版本的浏览器中被"修复",因为这不再适用.

我甚至尝试实现一个起始页面,要求他们先点击链接(在iFrame中)加载另一个页面然后创建会话.但即使这样也行不通.

我甚至无法使用javascript在iFrame中加载新页面,这似乎总是会导致无限循环刷新.

不,P3P标头不解决它.

有没有人有这个问题的解决方案?考虑到有多少facebook应用程序存在,我不能成为唯一拥有它的人!

小智 5

我使用禁用"接受第三方cookie"的客户端遇到了此问题.我的解决方案是强制PHP将会话ID嵌入到URI中,方法是将此行放在每个页面的开头:

ini_set('session.use_trans_sid', true);
Run Code Online (Sandbox Code Playgroud)

由于URL位于Facebook中的iframe中,因此顶部窗口中未显示SID.