Facebook перенаправить приложение со страницы холста на фан-страницу - PullRequest
13 голосов
/ 19 апреля 2011

Я создаю приложение Facebook как приложение iframe на фан-странице. Моя проблема на данный момент следующая: я добавил диалог запроса на Facebook (http://developers.facebook.com/docs/reference/dialogs/requests),, и все идет хорошо, за исключением одного: когда пользователь получает уведомление, ссылки переходят на холст, а не на фан-страницу (куда я хотел бы перейти) ...)

Поскольку я не могу убедить Facebook добавить некоторую функциональность (это было бы здорово), я ищу способ автоматического перенаправления со страницы холста приложения на фан-страницу, где это приложение добавляется в виде вкладки iframe.

Надеюсь, кто-то понимает, что я хочу сделать ...:)

спасибо, Питер

Ответы [ 4 ]

31 голосов
/ 28 июля 2011

Я также хотел убедиться, что пользователи просматривают мое приложение Facebook через вкладку страницы Facebook (а не через страницу приложения Facebook или непосредственно просматривая сам сайт).Мне удалось добиться этого с помощью этого Javascript в теге <script> в head моего документа (проверено 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>
14 голосов
/ 19 апреля 2011

Если я вас правильно понимаю, вы можете сделать это:

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

или вы можете использовать заголовок для перенаправления на этот URL. Это перенаправит вас на вкладку приложения на вашей фан-странице.

2 голосов
/ 31 декабря 2011

Мое приложение довольно динамичное, и я никогда не знаю, на какую страницу оно добавлено. Поэтому, когда я использовал URL 'http://www.facebook.com/YOUR_PAGE_NAME?sk=app_YOUR_APP_ID', он перенаправлял меня только на страницу, но не на вкладку приложения. Что я делаю:

1) Я получаю идентификатор страницы из signature_request (параметр, зашифрованный в base64url, который ваше приложение получает, когда кто-то заходит на страницу, поэтому вы должны расшифровать его и выбрать значение id из объекта страницы JSON)

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' к ссылке на страницу.

Может быть, это слишком сложно, но это единственный способ, который сработал для меня так, как я ожидал (перенаправление точно на вкладку приложения страницы).

0 голосов
/ 14 июля 2014
<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>
...