渲染/切换布局取决于应用程序是否在Facebook框架内

时间:2011-09-09 14:32:32

标签: ruby-on-rails css ruby-on-rails-3 facebook

我正在开发一个可以作为独立网站运行的应用程序,也可以在Facebook框架内呈现,即Facebook应用程序。

Facebook框架中只有一小部分网站可供使用,因此我需要一种切换布局的方法,具体取决于它是否在框架中呈现。

3 个答案:

答案 0 :(得分:0)

iframe通过POST填充到包含名为signed-request的{​​{3}}的服务器。
如果您的服务器请求中存在此参数,则表示该应用程序位于Facebook的iframe内。

答案 1 :(得分:0)

在javascript SDK中,FB.Canvas命名空间下的方法设计用于在画布上工作,你可以检查这些方法是否可用,即FB.init之后你可以调用if(FB.Canvas)最有可能返回undefined如果没有,你可以检查其他FB.Canvas方法,这些方法将指示你是否在画布上。例如:
https://developers.facebook.com/docs/reference/javascript/FB.Canvas.getPageInfo/

希望这会有所帮助

答案 2 :(得分:0)

我认为最简单的方法是使用不同的网址通过Facebook访问该网站。例如,如果外部网站位于www.xyz.com,请在您的网络服务器(和dns)上配置fb.xyz.com以指向同一位置,然后在您的应用设置中使用fb.xyz.com。然后,您的脚本可以轻松检查主机名,并确定它是否是应用程序请求。

类似的方法是创建一个子目录,它只是一个指向主目录的符号链接,并称之为“faceapp”。换句话说,www.xyz.com和www.xyz.com/faceapp指向同一个地方。然后当然在您的应用设置中使用www.xyz.com/faceapp/。在您的PHP中,您可以执行以下操作:

$faceapp=(strpos($_SERVER['SCRIPT_NAME'], '/faceapp/')===false?0:1);

并使用$ faceapp变量来确定如何呈现页面的部分内容。