不幸的是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