如何为Facebook SDK创建“channel.html”文件

时间:2012-04-06 14:17:09

标签: facebook channel

在其文档中,Facebook建议为其JavaScript SDK使用频道文件。我的问题涉及有关如何创建此文件的小细节。很明显,我必须使用行<script src="//connect.facebook.net/en_US/all.js"></script>

创建HTML文件

然后Facebook建议尽可能长时间地缓存此文件并提供PHP脚本来执行此操作。我的问题是:我应该把这个脚本放在哪里?在我将放置在我的网站安装的根目录中的channel.html文件中(自托管的Wordpress博客)。

谢谢!

P上。

3 个答案:

答案 0 :(得分:12)

频道文件应该只包含您已经提到过的代码

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

您可以将缓存代码放在任何位置,并且很可能将其放在索引文件中。

答案 1 :(得分:5)

我想强调一下我认为在这个特定的Q&amp; A中忽略的几点:

(1)在我看来,我会说Facebook推荐的“channel.html”代码片段需要是一个单独的文件 - 片段不能只是放入索引文件中,正如哈里推荐的那样(我假设他是指主页或网站的其他通用内容页面。)

如果查看SCRIPT元素的src属性指向的URL,它就是在JS-SDK代码中异步调用的完全相同的脚本:

connect.facebook.net/en_US/all.js

因此,将指向此文件的另一个SCRIPT元素放入索引页(或任何其他页面)只会产生完全浪费且冗余的HTTP请求。有一个单独的文件,即“channel.html”的全部意义,是Facebook解决跨域脚本(XSS)问题的一种方式。这个概念的解释比我在Stack Overflow文章中的更详细和更好理解,Why do we need to create a channel.html on our server to use Facebook JS SDK?

(2。)值得注意的是,如果您决定在“channel.html”文件中使用PHP代码段,那么您有两个选项在Facebook文档中没有明确说明:

(a)您可以使用PHP扩展名保存文件,例如“channel.php”,并在JavaScript中更新变量,如下所示: channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.php'

(b)您可以保留文件名“channel.html”并配置服务器以允许“.html”文件作为PHP处理。

我还假设该文件可以被调用,并存储在您的Web服务器上的任何位置,只要它的URL在channelURL值中提供。

答案 2 :(得分:3)

您可以创建channel.php而不是channel.html并在其中加入以下代码。

<?php
  $cache_expire = 60*60*24*365;
  header("Pragma: public");
  header("Cache-Control: maxage=".$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>