2012-07-26 62 views
2

我們已經有Facebook在我們的主要桌面應用程序上工作沒有問題。當我加入了相同的設置代碼到我們的移動網站,我收到的JavaScript SDK的錯誤:Facebook的iOS移動Web JS SDK錯誤

Received message of type object from https://s-static.ak.facebook.com, expected a string

然後,我改變了設置代碼的精確複製品從這裏:https://developers.facebook.com/docs/guides/mobile/web/並收到完全相同的消息。

此錯誤僅在用戶代理是Chrome Developer Tools或iOS Simulator中的iOS或Android時顯示。當它從桌面運行時,我們沒有看到這個錯誤。

任何想法這裏發生了什麼?

謝謝:)

回答

2

我有同樣的錯誤。這不一定是你得到它的原因,但是我最終在看數據包,以我的iPhone模擬器接收,這裏是從S-statick.ak錯誤:

[truncated] <span>Given URL is not allowed by the Application configuration.: One or more of the given URLs is not allowed by the App&#039;s settings. It must match the Website URL or Canvas URL, or the domain must be a subdomain of one o 

對我來說,錯誤是,在我的設備上,我通過一個IP地址(192.168.xx等)訪問該站點,並在本地開發我已託管路由本地主機到我的Facebook應用程序配置中的URL ...所以IP未配置爲應用程序。

Facebook不會讓我使用IP地址,所以它似乎是唯一的選擇是測試部署或DNS服務器。希望這可以幫助你。

+0

這是非常有意義的事情,我應該考慮。感謝您的有用答案。 – Brandon 2012-08-09 13:08:49

5

在所有應有的尊重,我相信bokonic的答案是錯過了這一點。您收到的消息的直接原因很可能是javascript postMessage方法。它用於與您的網站與window.openiframe的嵌入式網站返回的對象進行通信。

window.parent.postMessage(message, targetOrigin); 

你可能想看看this article看看它是如何工作的。

根據MDN referencepostMessage方法的第一個參數可以是任何類型。 在Gecko 6.0(Firefox 6.0/Thunderbird 6.0/SeaMonkey 2.3)之前,消息參數必須是字符串

我測試了Chrome 28.0.1500.72(寫這個答案時的最新版本)的方法,它傳遞一個對象時工作正常,但仍然拋出警告消息到控制檯。我相信Facebook會將一些豐富的數據作爲字符串傳遞,讓他們感到不舒服,因此他們將其作爲對象傳遞,根本不在乎警告。或者,由於有解決方法(例如JSON.stringify),他們有一個他們不知道的錯誤。

+0

似乎是正確的,但實際上警告信息來自Facebook sdk ITSELF--它不是瀏覽器或任何東西的一部分,它是facebook sdk的一部分。 (這可以簡單地通過控制檯輸出源的斷點來確認),如果您的應用程序恰好使用postMessage進行任何操作,這實際上很煩人,因爲Facebook會高興地通過一百萬條「警告」不打算用於它。 – nightpool 2015-01-08 01:19:17

+0

我認爲這是更正確的答案。警告是由於window.postMessage方法發生的。我在這裏以相同的警告結束,但不是因爲模擬器。我使用了一個額外的postMessage,並且FB sdk也正在偵聽郵件,並且因爲我正在發送一個對象而拋出錯誤! – 2015-07-07 04:49:51