Facebook iOS Mobile Web JS SDK错误

我们已经让Facebook在我们的主桌面应用程序上运行而没有任何问题。 当我向移动网站添加相同的设置代码时,我收到了来自JavaScript 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开发者工具或iOS模拟器中用户代理为iOS或Android时显示。 当它从桌面运行时,我们没有看到此错误。

知道这里发生了什么吗?

谢谢 :)

我有同样的错误。 这不一定是你得到它的原因,但我最终看到我的iphone模拟器收到的数据包,这是来自s-statick.ak的错误:

 [truncated] Given URL is not allowed by the Application configuration.: One or more of the given URLs is not allowed by the App'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等)访问该网站,在本地开发我有主机路由localhost到我的Facebook应用程序配置中的url。 ..所以没有为应用配置IP。

Facebook不会让我使用IP地址,因此似乎唯一的选择是测试部署或DNS服务器。 希望这可以帮助你。

尽管如此,我相信bokonic的答案忽略了这一点。 您收到的消息的直接原因很可能是javascript postMessage方法。 它用于通过window.openiframe的嵌入式网站返回的对象来传达您的网站。

 window.parent.postMessage(message, targetOrigin); 

您可能希望查看本文以了解它的工作原理。

根据MDN引用 , postMessage方法的第一个参数可以是任何类型。 仍然, 在Gecko 6.0之前(Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3),message参数必须是一个字符串

我在Chrome 28.0.1500.72(编写此答案时的最新版本)上测试了该方法,它在传递对象时工作正常,但仍然向控制台发出警告消息。 我认为facebook将一些丰富的数据作为字符串传递给他们感到不舒服,所以他们将它作为一个对象传递,并且根本不关心警告。 或者,由于有一个解决方法(例如JSON.stringify ),他们有一个他们不知道的错误。