不幸的是Safary阻止第三方的cookies,这是对我们的Facebook应用程序开发者的一个大问题。唯一能够正常工作的解决方案,即使在safari上有新的更新也是我在上面描述的那个。
我不知道你的应用程序设计得怎么样,但我做的每个应用程序都有一个登录页面,其中包含用于用户输入页面的按钮。
这个按钮有两个主要目的,第一个是在用户尚未授予的情况下请求权限,另一个是使用我的应用所在的URL打开一个新窗口。因为用户在iframe外部访问您的域名,您可以创建一个会话,所以基本上这个新窗口访问我的url会创建一个会话,然后自行关闭。
您可以在上面的问题中阅读更多关于此的内容。虽然大部分的答案是过时的,你会得到一个什么样的工作的想法,什么不
Safari 3rd party cookie iframe trick no longer working?
编辑
用户按下按钮后,我所做的就是,应用转到下一页,然后用一些javascript打开一个新窗口(如弹出窗口)。
所以在着陆页上你只要把一个监听器,你的按钮(注意:我使用jQuery)
$(document).on("click", ".bt-landing", function(){
window.open('<?=site_url("app/create_session")?>', '_blank', 'toolbar=0,location=0,menubar=0');
});
这是控制器方法“建立事务”
public function create_session(){
setcookie("safari_test", "1");
$this->load->view('create_session');
}
代码并加载视图是这一个:
<html>
<head>
<meta charset="utf-8">
<title>App title</title>
<script type="text/javascript" src="<?=base_url('public/js/jquery-1.9.1.min.js')?>"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(function(){
setTimeout(function(){window.close()},1000);
})
</script>
</body>
</html>
什么值可以返回?或者哪个错误返回? – 2013-03-05 13:39:57
它不会返回错误,它只是不设置cookie – 2013-03-05 13:40:20