2009-02-16 82 views
5

我建立一個谷歌小工具中運行的Facebook Connect應用程序無法正常工作。作爲一個小工具意味着應用程序在iframe中運行。在應用程序內部,有一個允許註冊用戶發表評論的表單。提交是使用AJAX進行的,但是我用普通表單獲得了相同的結果。問題是我需要獲取用戶的Facebook ID。在Firefox中,它工作正常,但在Internet Explorer 7,我得到以下錯誤:裏面的iframe的Facebook Connect應用程序在IE7

'A session key is required for calling this method' 

我認爲,這是由於IE處理第三方Cookie的方式,因爲如果我去的Internet選項/隱私/高級,並檢查覆蓋自動cookie處理並接受所有cookie,它工作正常。我無法從javascript中傳遞Facebook ID,因爲任何人都可以篡改它。

編輯:如果我直接打開iframe的內容,應用程序工作正常。問題實際上是由於IFRAME和IE安全模式。

我在做什麼錯?我該如何解決這個問題?

+0

我打與在第三方網站的覆蓋iframe中運行一個Facebook Connect應用程序類似的問題產生,除非我也遇到了Safari和Firefox的問題,如果用戶選擇不接受第三方cookie。你有沒有看到同樣的問題,或者我錯過了什麼? – 2009-04-23 05:05:28

+0

我沒有嘗試在其他瀏覽器上阻止第三方Cookie,但這會導致相同的問題。我去打開一個彈出窗口的解決方案。事實上,Facebook現在在彈出窗口中使用了一個「假」彈出窗口,而不是打開另一個窗口,這對我來說沒問題。 – 2009-04-24 14:56:44

回答

7

您是否嘗試過加入P3P政策?

如果響應設置cookie具有緊湊的政策,IE瀏覽器將使用它來決定是否允許第三方cookie的..

+0

嗨,我不知道這件事。我會調查。非常感謝! – 2009-02-17 14:49:13

1

我發現了一個可以工作的解決方法,雖然它有點難看:當用戶點擊'登錄'按鈕時,它會打開一個彈出窗口,它來自我自己的網站,其中包含Facebook Connect登錄按鈕。用戶登錄後,我關閉彈出窗口並重新加載iframe。

這是十分可怕的,因爲它打開了兩個彈出窗口,但至少它的工作原理。我會檢測是否使用javascript啓用cookie,如果啓用了,我將跳過第一個彈出窗口。

我還是開到更好的解決方案...


編輯:Facebook目前採用的是「假」彈出我的彈出式裏面,而不是打開另一扇窗。現在我只有一個彈出窗口,這對我來說可以。

3

我修改我如何檢查,如果用戶是解決同樣的問題在FB連接登錄後登錄到PHP頁面。

因此,他們登錄到FB連接與IE7。 下一步,在那裏我需要確認他們確實登錄到Facebook的我用下面的代碼後續的頁面加載(注意,facebook- $> require_login()等函數沒有工作 - 他們只在IE 7中返回null):

// Validate from Facebook that session is valid and user is logged in. require_once 'facebook/facebook.php'; $facebook = new Facebook(YourAppsAPIKeyPublic, YourAppsAPIKeySecret); $facebook->api_client->session_key = $this->userAPISessionKey; $fb_user_id = $facebook->api_client->users_getLoggedInUser();

$ fb_user_id現在應該有一個有效的FaceBook用戶ID。

關於隱私政策和Facebook連接+ IE 7:

雖然這並沒有爲我工作,這似乎爲別人打工。在.htaccess中:

Header append P3P "CP=\"HONK\""

或PHP文件:

header('P3P: CP="CAO PSA OUR"');header('P3P: CP="HONK"');

參考:http://forum.developers.facebook.com/viewtopic.php?id=28636

ASP.NET:

protected void Application_BeginRequest(Object sender, EventArgs e) 
{ 
    HttpContext.Current.Response.AddHeader("p3p", "CP=\"CAO PSA OUR\""); 
} 
相關問題