2012-07-26 61 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