Php FB选项卡页面应用和会话的safari错误

Php FB选项卡页面应用和会话的safari错误,php,facebook,session,safari,Php,Facebook,Session,Safari,我有个问题 我试着编写一个类似facebook页面标签应用程序的程序。 我必须使用会话来记住已签名的请求 但问题是Safari不记得那个次会议 计划是: $facebook = new Facebook($config); if (isset($_REQUEST['signed_request'])) { $encoded_sig = null; $payload = null; list($encoded_si

我有个问题

我试着编写一个类似facebook页面标签应用程序的程序。 我必须使用会话来记住已签名的请求

但问题是Safari不记得那个次会议

计划是:

$facebook = new Facebook($config);
      if (isset($_REQUEST['signed_request'])) {
            $encoded_sig = null;
            $payload = null;
            list($encoded_sig, $payload) = explode('.', $_REQUEST['signed_request'], 2);
            $sig = base64_decode(strtr($encoded_sig, '-_', '+/'));
            $signed_request = json_decode(base64_decode(strtr($payload, '-_', '+/'), true),true);
            $op=True;
        }else {
            $op=False;
        }

if($op)
{
  $_SESSION['liked']=$signed_request['page']['liked'];
  $_SESSION['admin']=$signed_request['page']['admin'];

}else{
  $url="PAGEAPP URL";
  echo("<script> top.location.href='" . $url . "'</script>");
  exit();
}

Safari不允许跨域cookie

由于主页是Facebook.com域,并且您的iframe域不同,Safari不会在iframe内处理cookie

尽管其他浏览器也有变通办法,而且Safari也有变通办法,但苹果似乎填补了这个漏洞

虽然我看不到您的完整代码和场景,但我建议您避免使用会话,并始终查询Facebook API以检查“喜欢”和“管理”标志。 如果用户的管理权限被撤销,或者用户不喜欢该页面,则会话变量将变得不同步,除非您不断更新会话变量

检查用户是否喜欢该页面:

检查用户是否是管理员:

未找到。我不能使用$facebook->api/me/li。。因为我没有访问令牌。我必须使用已签名的请求。如果用户离开然后返回应用程序,您是否尝试使用会话变量?或者是在应用程序的不同页面之间移动时存储它们的状态?我使用会话来创建菜单。因为用户从index.php转到page.php。在page.php上,找不到签名的\u请求。链接到page.php是正常的,有php中的tris脚本吗?