【问题标题】:Why does the Facebook JavaScript SDK request all these files?为什么 Facebook JavaScript SDK 会请求所有这些文件?
【发布时间】:2012-07-01 09:39:09
【问题描述】:

我正在尝试优化 Facebook SDK 的使用。查看 Chrome 的网络选项卡显示,当 SDK 加载时,它会拉入许多其他文件:

第一个是 all.js,其中包含 Facebook API。截图中的其余资源是在调用FB.init之后加载的。

about:blank 有 3 次调用,xd_arbiter.php 有 3 次调用。 oauth 有 2 次调用。我不知道为什么前两个调用有 3 个。

all.js 似乎创建了 2 个 iframe 元素(如果加载 SDK 的页面通过 HTTPS 提供,则只创建一个 - fb_xdm_frame_https 一个。在这种情况下,似乎发出了 2 个请求而不是 3 个):

<div id="fb-root" class=" fb_reset">
    <div style="position: absolute; top: -10000px; height: 0px; width: 0px; ">
        <div></div>
        <div>
            <iframe id="fb_xdm_frame_http" name="fb_xdm_frame_http"></iframe>
            <iframe id="fb_xdm_frame_https" name="fb_xdm_frame_https"></iframe>
        </div>
    </div>
</div>

请求空白页是因为 iframe 元素是在没有 src 属性的情况下创建的(稍后通过 JavaScript 添加)。当它被设置时,它被设置为 xd_arbiter.php

这解释了 3 个中的 2 个。但是对 about:blankxd_arbiter.php 的其他调用从何而来?通过JSBeautifier 运行 all.js 并遵循代码,我已经走到了这一步,但我看不出第三次请求这些文件的原因或方式。

【问题讨论】:

    标签: javascript facebook-javascript-sdk


    【解决方案1】:

    xd_arbiter.php 是基础架构的一部分,用于促进您的页面与所有后续显示的小部件或对话框之间的跨域消息传递,或 Facebook 主站点(如果用作 Canvas 页面)。

    您看到两个对 /dialog/oauth 的请求似乎是您的实现问题,除了设置 status: true 之外,您是否手动调用 FB.getLoginstatus(.., true)

    无论如何,xd_arbiter.php 的第三个请求只是对通过跨域通道返回的 /dialog/oauth 请求的响应,并且由于 xd_arbiter.php 资源被缓存(您似乎禁用了缓存,因为对 xd_arbiter 的最后一次请求很明显)并没有真正产生任何实际成本。

    【讨论】:

    • 谢谢。据我所知,没有调用getLoginStatus,但status 选项设置为true。将其设置为 false 似乎可以将请求数量减少到我所期望的水平。
    • 那么您肯定会同时执行隐式身份验证 (status:true) 以及显式身份验证 - 现在您只剩下显式身份验证了。
    • @SeanKinsey 但是为什么我的页面上有 2 个 iframe(http、https)? AFAIK 整个想法是 FB.login 打开弹出窗口,然后在其中创建 another IFRAME,其中包含我的页面 url 的 SRC,然后他可以通过将信息发送到父窗口window.top.sendUserObj({...})。还是我弄错了? I thought it is something like this....(附注:我使用的是 chrome 27 并且仍然可以看到那些 iframe。)你能解释一下吗?
    • @SeanKinsey 我在这里问过。我会很高兴得到答案:-) stackoverflow.com/questions/16862207/…
    猜你喜欢
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 2019-07-03
    • 2015-04-20
    • 1970-01-01
    相关资源
    最近更新 更多