2

如果他/她尝试打开我的应用托管站点,我想要将用户重定向到我的应用的代码。例如:我的应用程序链接:https ://apps.facebook.com/gaming-zone/ 应用程序托管链接: http: //gaming-zone.herokuapp.com/

我已经找到了一些代码,但是这些代码会不断地重定向用户,如果他在 facebook 上使用我的应用程序并且他正在玩任何游戏,那么它也会将用户重定向到应用程序主页。我想要仅在用户访问我的托管站点时重定向用户的确切代码。

这些是我已经找到的代码:

<script type='text/javascript'>
if (window.top.location == window.location) 
  window.top.location = 'https://apps.facebook.com/gaming-zone/';
</script>
4

2 回答 2

0

问题是您无法读取 window.top.location 值。你只能写。奇怪,但就是这样。

选项 1:将您的应用挂载到页面选项卡并创建一个赞门。像门总是会在 facebook iframe 之外返回 false。

选项 2:在后端加载页面时检查签名的请求数据。

选项 3:其他选项是像您一样但在后端检查顶部 url。

于 2012-09-13T11:52:42.023 回答
0

这是我使用的代码:

<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。

例如:如果您在http://YourDomain.com/anotherpage.php中使用它,您可以将上面代码中的 URL 更改为https://apps.facebook.com/YOUR_APP_NAMESPACE/anotherpage.php

于 2012-09-14T06:09:14.543 回答