2011-04-29 167 views
4

我有一個使用iframe的facebook應用程序。facebook app iframe safari上的登錄問題

facebook將我的網站加載到iframe中。當我點擊一個鏈接時,我的網站顯示一個使用lightbox顯示Facebook登錄的iframe。一切正常工作,即鉻,即鉻。在Safari瀏覽器中,幀無限地重新加載。

PHP代碼中的login.php

window.fbAsyncInit = function() { 




    FB.init({ 
    appId : '<?=$appId?>', 
    status : true, // check login status 
    cookie : true, // enable cookies to allow the server to access the session 
    xfbml : true // parse XFBML 
    }); 

    check_login_session(); 

    // whenever the user logs in, we refresh the page 
    FB.Event.subscribe('auth.login', function() { 

     $.browser.safari = ($.browser.safari && /chrome/.test(navigator.userAgent.toLowerCase())) ? false : true; 

     window.location.href = window.location.href; 
    }); 


}; 

任何想法

$me = null; 


$session = $facebook->getSession(); 

if ($session) { 
    try { 

    $me = $facebook->api('/me'); 

    $_SESSION['facebook'] = $me; 


    } catch (FacebookApiException $e) { 
    } 
} 

if($me) require_once("logged.php"); 
else require_once("login.php"); 

的JavaScript,將不勝感激!

謝謝!

+0

我剛剛發現http://stackoverflow.com/questions/172223/how-do-i-set-cookies-from-outside-domains-inside-iframes-in-safari一個有趣的評論。我認爲布羅特的解決方案可行,但我不明白他寫了什麼。 – Moon 2011-04-29 04:55:21

+0

我發現http://forum.developers.facebook.net/viewtopic.php?pid=257432#p257432 – Moon 2011-04-29 07:01:03

+0

一個完美的解決方案誰作者是,我會吻!!!!! – Moon 2011-04-29 07:03:21

回答

2

如果烏拉圭回合仍然在尋找解決方案,然後嘗試建立P3P頭 http://www.p3pwriter.com/LRN_121.asp

平時也設置裏面的iframe cookie時的安全性問題,P3P頭作爲網站和客戶端計算機之間的協議,低保保存在信息餅乾不會被濫用。

快速的解決方案:http://planet.admon.org/how-to-implement-p3p-http-headers-for-cross-site-cookies/

做什麼: 複製粘貼此在你的頭:

<?php 
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"') 
?> 

完蛋了!