13

我正在将 facebook 应用程序构建为粉丝页面中的 iframe 应用程序。我现在的问题是下一个:我添加了 facebook 请求对话框(http://developers.facebook.com/docs/reference/dialogs/requests),一切都很顺利,除了一件事:当用户收到通知时,链接转到画布页面,而不是粉丝页面(我想去的地方......)

由于我无法说服 facebook 添加一些功能(那会很棒),我正在寻找一种方法来自动从应用程序画布页面重定向到粉丝页面,该应用程序被添加为 iframe 选项卡。

我希望有人明白我想做什么...... :)

谢谢,彼得

4

4 回答 4

31

我还想确保用户通过 Facebook 页面选项卡查看我的 Facebook 应用程序(而不是通过 Facebook 应用程序页面或直接查看实际网站本身)。我已经设法在我的文档(经过测试的 Mac/PC FF、Chrome、Opera、IE6-8、Safari)的<script>标签中使用这个 Javascript 来实现它。head

<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() || ReferrerIsFacebookApp()) {
    top.location.replace("http://permalink-to-my-facebook-page-tab");
  }
</script>
于 2011-07-28T16:14:53.753 回答
14

如果我理解正确,您可以这样做:

top.location.href='http://www.facebook.com/YOUR_PAGE_NAME?sk=app_YOUR_APP_ID'

或者您可以使用标头重定向到该网址。这将重定向到您的粉丝页面上的应用程序选项卡。

于 2011-04-19T10:40:21.173 回答
2

我的应用程序非常动态,我永远不知道它添加到了哪个页面。因此,当我使用 URL 'http://www.facebook.com/YOUR_PAGE_NAME?sk=app_YOUR_APP_ID' 时,它只将我重定向到页面,而不是应用程序选项卡。我要做的是:

1)我从 signed_request 获取页面 id(一旦有人进入页面,您的应用程序就会获取加密的 base64url 参数,因此您必须对其进行解密并从 JSON 页面对象中选择 id 值)

2)然后我从https://graph.facebook.com/PAGE_ID_YOUR_GET获取页面数据。您将获得带有一些页面数据的 JSON 对象,以 JSON 格式作为响应。

3)只有在第 2 点之后,我才从响应中获得页面的“链接”值。就像http://www.facebook.com/pages/Some-Page-Name

4) 最后我将 '?sk=app_YOUR_APP_ID' 添加到页面链接。

也许这太复杂了,但这是它以我预期的方式为我工作的唯一方式(完全重定向到页面应用程序选项卡)。

于 2011-12-31T10:24:47.577 回答
-2
<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() || ReferrerIsFacebookApp()) {
    top.location.replace("http://permalink-to-my-facebook-page-tab");
  }
</script>
于 2014-07-14T15:02:21.907 回答