-4

我已经使用 facebook API 开发了 facebook 应用程序,我在页面顶部包含了 facebook api,它正在为所有页面加载,因为我在所有页面中都使用了 api,我不知道这是否是我的问题申请需要时间,

任何人都可以建议我如何解决这个问题。提前致谢

4

1 回答 1

4

由于您的标签显示 Javascript,我假设您正在使用 Graph API 周围的 Javascript SDK。请参阅: http: //developers.facebook.com/docs/reference/javascript/ ,因为它讨论了未正确指定频道 url html 文件将如何使 JS SDK 运行非常缓慢。

这是它的重要部分:

频道文件

频道文件解决了某些浏览器中跨域通信的一些问题。channel.html 文件的内容可以只有一行:

  <script src="//connect.facebook.net/en_US/all.js"></script>

尽可能长时间地缓存通道文件很重要。提供此文件时,您必须发送具有较长有效期的有效 Expires 标头。这将确保频道文件被浏览器缓存,这对于流畅的用户体验很重要。如果没有适当的缓存,跨域通信将变得非常缓慢,用户体验将严重下降。在 PHP 中执行此操作的一种简单方法是:

 <?php
 $cache_expire = 60*60*24*365;
 header("Pragma: public");
 header("Cache-Control: max-age=".$cache_expire);
 header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$cache_expire) . ' GMT');
 ?>
 <script src="//connect.facebook.net/en_US/all.js"></script>

channelUrl 参数是可选的,但建议使用。提供通道文件可以帮助解决三个特定的已知问题。首先,包含跨框架通信的代码的页面可能会导致社交插件在没有 channelUrl 的情况下显示为空白。其次,如果没有提供 channelUrl 并且页面包含自动播放的音频或视频,则用户可能会听到两个音频流,因为该页面已在后台第二次加载以进行跨域通信。第三,通道文件将防止在您的服务器端日志中包含额外的命中。如果您不指定 channelUrl,您可以从日志中删除包含 fb_xd_bust 或 fb_xd_fragment 参数的页面查看,以确保正确计数。

channelUrl 必须是与包含 SDK 的页面匹配的完全限定 URL。换句话说,如果您的站点使用 www 提供服务,则频道文件域必须包含 www,并且如果您修改页面上的 document.domain,您也必须在 channel.html 文件中进行相同的 document.domain 更改。协议也必须匹配。如果您的页面是通过 https 提供的,那么您的 channelUrl 也必须是 https。记住也要为脚本 src 使用匹配协议。上面的示例代码使用了应该正确处理大多数 https 情况的协议相关 URL。

于 2012-06-07T19:30:43.693 回答