不幸的是,Safary 阻止了 3rd 方 cookie,这对我们 Facebook 应用程序开发人员来说是一个大问题。即使对 safari 有新的更新,唯一可以肯定工作的解决方案是我将在上面描述的解决方案。
我不知道您的应用程序是如何设计的,但我所做的每个应用程序都有一个带有按钮的登录页面,供用户进入该页面。
这个按钮有两个主要用途,第一个是在用户尚未授予的情况下请求权限,另一个是打开一个新窗口,其中包含我的应用所在的 url。因为用户在 iframe 之外访问您的域,您可以创建一个会话,所以基本上这个新窗口访问我的 url 创建一个会话,然后自行关闭。
您可以在上面的问题中阅读更多相关信息。尽管大多数答案都已过时,但您会了解哪些有效,哪些无效
Safari 3rd 方 cookie iframe 技巧不再有效?
编辑
我所做的是在用户按下按钮后,应用程序转到下一页,然后我打开一个带有一些 javascript 的新窗口(如弹出窗口)。
因此,在登录页面上,您只需在按钮上放置一个侦听器(注意我使用的是 jquery)
$(document).on("click", ".bt-landing", function(){
window.open('<?=site_url("app/create_session")?>', '_blank', 'toolbar=0,location=0,menubar=0');
});
这是控制器方法“create_session”的代码
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>