facebook将应用程序从画布页面重定向到粉丝页面

时间:2011-04-19 10:02:25

标签: facebook canvas facebook-page

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

由于我无法说服facebook添加一些功能(这会很棒),我正在寻找一种自动从app画布页面重定向到粉丝页面的方法,这个应用程序被添加为iframe标签。

我希望有人理解我想做的事情...... :)

谢谢,彼得

4 个答案:

答案 0 :(得分:31)

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

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

答案 1 :(得分:14)

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

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

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

答案 2 :(得分:2)

我的应用程序非常动态,我永远不知道它添加到哪个页面。因此,当我使用网址“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'添加到页面链接。

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

答案 3 :(得分:-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>
相关问题