Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将站点重定向到Facebook画布URL而不进入无限循环?_Javascript_Jquery_Html_Facebook_Facebook Graph Api - Fatal编程技术网

Javascript 如何将站点重定向到Facebook画布URL而不进入无限循环?

Javascript 如何将站点重定向到Facebook画布URL而不进入无限循环?,javascript,jquery,html,facebook,facebook-graph-api,Javascript,Jquery,Html,Facebook,Facebook Graph Api,如果我的Facebook画布页面指向mydomain.com,并且如果用户直接访问mydomain.com,我如何使该站点显示在Facebook画布页面上?基本上,我希望我的网站总是加载在Facebook画布上。如果我只是重定向到apps.facebook.com/mydomain,我想它会进入一个无限循环,因为facebook画布正在尝试加载mydomain.com 检查HTTP请求头中的referer,并以此为逻辑基础。尽管如此,我不知道将整个网站重定向到Facebook是解决问题的好办法

如果我的Facebook画布页面指向mydomain.com,并且如果用户直接访问mydomain.com,我如何使该站点显示在Facebook画布页面上?基本上,我希望我的网站总是加载在Facebook画布上。如果我只是重定向到apps.facebook.com/mydomain,我想它会进入一个无限循环,因为facebook画布正在尝试加载mydomain.com

检查HTTP请求头中的referer,并以此为逻辑基础。尽管如此,我不知道将整个网站重定向到Facebook是解决问题的好办法


更好的解决方案是将Facebook应用程序部分托管在单独的页面或域上,并从frontpage链接到它。

检查HTTP请求头中的引用者,并以此为基础进行逻辑分析。尽管如此,我不知道将整个网站重定向到Facebook是解决问题的好办法


更好的解决方案是在单独的页面或域上托管Facebook应用程序部分,并从frontpage链接到它。

您可以使用javascript在客户端完成此操作。检查页面当前是否在iframe内打开,如果不是这样,您不在facebook内,应执行重定向:

ifwindow.parent==窗口执行重定向


您可以找到一种在服务器端实现它的方法,但是,除非facebook在加载时传递一些特定的参数,否则您可能需要依赖HTTP\u REFERER参数,浏览器不会总是发送它。

您可以使用javascript在客户端实现。检查页面当前是否在iframe内打开,如果不是这样,您不在facebook内,应执行重定向:

ifwindow.parent==窗口执行重定向


您可以找到一种在服务器端实现它的方法,但是,除非facebook在加载时传递一些特定的参数,否则您可能需要依赖HTTP\u REFERER参数,浏览器不会总是发送它。

如果您的应用在facebook中加载,页面将被发布到,POST数据将包含一个签名的请求字段。这可以在服务器上使用,以发现用户是否正确访问了应用程序-如何在iframe内的导航中保留此信息取决于您


客户端您可以检查窗口!==top和/canvas/.testwindow.name。

如果您的应用程序正在Facebook中加载,则该页面将被发布到,并且发布数据将包含签名请求字段。这可以在服务器上使用,以发现用户是否正确访问了应用程序-如何在iframe内的导航中保留此信息取决于您


客户端您可以检查窗口!==top和/canvas/.testwindow.name。

我在另一个问题上找到了这个,并在我自己的脚本中使用它:

<script type="text/javascript">
  function NotInFacebookFrame() {
    return top === self;
  }
  function ReferrerIsFacebookApp() {
    if(document.referrer) {
      return document.referrer.indexOf("apps.facebook.com") != -1;
    }
    return false;
  }
  if (NotInFacebookFrame()) {
    top.location.replace("https://apps.facebook.com/YOUR_APP_NAMESPACE");
  }
</script>
这会检查他们当前是否在Facebook框架中,并且*只有在他们不在的情况下,才会将他们重定向到https://apps.facebook.com/YOUR_APP_NAMESPACE

注意:您可以在应用程序的任何页面上使用此功能,只需相应地更改URL即可


例如:如果您在中使用此选项,您可以将上面代码中的URL更改为

我在另一个问题中找到此选项,并在我自己的脚本中使用它:

<script type="text/javascript">
  function NotInFacebookFrame() {
    return top === self;
  }
  function ReferrerIsFacebookApp() {
    if(document.referrer) {
      return document.referrer.indexOf("apps.facebook.com") != -1;
    }
    return false;
  }
  if (NotInFacebookFrame()) {
    top.location.replace("https://apps.facebook.com/YOUR_APP_NAMESPACE");
  }
</script>
这会检查他们当前是否在Facebook框架中,并且*只有在他们不在的情况下,才会将他们重定向到https://apps.facebook.com/YOUR_APP_NAMESPACE

注意:您可以在应用程序的任何页面上使用此功能,只需相应地更改URL即可


例如:如果您在中使用此方法,您可以将上面代码中的URL更改为

谢谢,尝试此方法,此方法有效。不过唯一的问题是,重定向后,我的google字体css没有加载其他本地样式表似乎也加载了。检查它们是否在同一页面的版本中工作,而不是在FaceBook中。谢谢,尝试了这个方法,这个方法就行了。但唯一的问题是,重定向后,我的google字体css没有加载其他本地样式表似乎也加载了。检查它们是否在同一个页面的版本中工作,而不是在facebook中