2011-01-07 106 views
1

我有一個Facebook Connect網站正在開發中。該登錄在Firefox,IE,Safari和Chrome上運行良好。但是當我使用Opera進行測試時(使用最新版本= 11),我遇到了問題。登錄Facebook Facebook使用JavaScript進行連接SDK在Opera中凍結?

我得到登錄表單彈出窗口的位置,用我的電子郵件和密碼填寫,然後單擊登錄按鈕。之後,登錄窗口變空並且窗口標題顯示「XD Proxy」。

我正在使用Facebook Connect JavaScript SDK,並且在我的解決方案中有一些iFrame(顯示在jQuery lightbox-style插件「ColorBox」中)。

你知道Opera和Facebook Connect是否存在問題,或者如果我的代碼中存在導致此問題的東西?正如我所說,該解決方案已在所有其他主流瀏覽器中測試過,並且在那裏工作得很好。

在此先感謝!

/Thomas

PS。在開發服務器上,我在端口號8585上運行該站點。我在網上看到一些帖子,說這可能會導致問題。

回答

1

我發現了一個似乎可行的解決方案!如果我添加一個channelUrl選項FB.init,我可以登錄我的歌劇有一個警告提示如下:

警告 http://www.yourdomain.com/channel.html?fb_xd_fragment

在公共互聯網上的一個頁面,即可請求 數據私人內聯網。對於 安全原因,自動訪問被阻止,但可以選擇 繼續。

LINK:繼續

LINK:當數據從該服務器請求我的 專用Intranet 一直持續下去

我點擊了鏈接「繼續」之後,它的工作(本次會議期間)。原來FB.init線看起來像這樣(的appid和一些其他的東西已經在這個例子中被替換):

// Facebook init 
FB.init({ appId: '123456789', status: true, cookie: true, xfbml: true }); 

我已經添加了channelUrl之後,它看起來像這樣:

// Facebook init 
FB.init({ appId: '123456789', status: true, cookie: true, xfbml: true, channelUrl: "http://www.yourdomain.com/channel.html" }); 

文件「channel.html」是一個簡單的文件,該文件只包含這行代碼:

<script src="http://connect.facebook.net/en_EN/all.js"></script> 

創建它,並把它放在你的服務器上你已經在channelUrl指定的位置。服務器的根是一個好地方。

下一步是要弄清楚如何徹底擺脫Opera警告?

祝你好運!

/托馬斯·卡恩

+0

我試過這個,但頁面凍結,但沒有任何網址在瀏覽器的工具欄,我們寫網站,去! (對不起,我不知道英文中的這個單詞)。沒有channelUrl,它會凍結,但仍然是工具欄中的鏈接(指向facebook plataform) – 2011-01-19 17:26:48

5

Facebook目前連接失敗,因爲Facebook的腳本,通過是否被支持的attachEvent方法檢查「檢測」 IE瀏覽器。不幸的是,Opera支持這種方法(歷史上與其他需要它的網站兼容)。 https://github.com/facebook/connect-js/pull/240 ..

這個中斷的僞瀏覽器檢測導致了這個問題,因爲Facebook恰好使用了一些IE瀏覽器代碼,Opera不支持在閃存中嵌入跨文檔消息的Flash,腳本的基礎部分,而腳本的替代window.postMessage()部分有其他的問題說明如下:http://my.opera.com/hallvors/blog/2010/07/20/postmessage-s-targetorigin-and-security

+0

謝謝你解釋背景!事實上,在我問這個問題之前,我已經發現並閱讀了你的博客帖子,但說實話我並不瞭解所有內容,也不確定它是否與我所遇到的問題一樣。正如我上面提到的,我現在有一些爲Opera工作的解決方案,但是我得到的警告並不是我想要的。 – tkahn 2011-01-10 14:05:33

1

要修復它在Opera,只需添加FB.init()後,執行以下操作:

if($.browser.opera) // it uses jQuery library here! 
{ 
    FB.XD._transport="postmessage"; 
    FB.XD.PostMessage.init(); 
} 
+0

我收到一條錯誤消息:「無效的參數,給定的URL不被應用程序配置允許。」我必須更改任何配置設置嗎?我應該在FB.init參數中保留channelUrl參數嗎? – tkahn 2011-02-03 08:22:03

+1

這實際上適用於Opera。謝謝。 – 2011-02-16 14:28:34