2

我们已经让 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 时显示。当它从桌面运行时,我们没有看到此错误。

知道这里发生了什么吗?

谢谢 :)

4

2 回答 2

5

恕我直言,我认为博科尼克的回答没有抓住重点。您收到消息的直接原因很可能是 javascriptpostMessage方法。它用于将您的网站与返回的对象window.openiframe的嵌入式网站进行通信。

window.parent.postMessage(message, targetOrigin);

你可能想看看这篇文章,看看它是如何工作的。

根据MDN 参考,该方法的第一个参数postMessage可以是任何类型。尽管如此,在 Gecko 6.0(Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3)之前, message 参数必须是 string

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

于 2013-07-29T17:38:43.823 回答
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 等)访问该站点,而在本地开发中,我有主机将 localhost 路由到我的 facebook 应用程序配置中的 url。 ..所以没有为应用程序配置IP。

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

于 2012-08-08T19:44:39.653 回答