Подтвердить что ты не робот

Открыть информацию о графике для ссылки на вкладку "Страница"

При отправке ссылки непосредственно на вкладку на странице Facebook,

https://www.facebook.com/PAGENAME?sk=app_APPID

Facebook собирает теги страницы Open Graph <meta>, что означает, что сообщение ссылки связано с изображением профиля страницы, именем и описанием "Страница & bullet; n как это".

Я надеялся, что Facebook вместо этого будет использовать теги og <meta> из HTML приложения, позволяя настраивать ссылки на сообщения.

Какой лучший способ предоставить прямую ссылку на конкретную вкладку на странице Facebook с настраиваемым контентом в сообщении ссылки?

4b9b3361

Ответ 1

Лучший способ, с помощью которого я мог убедиться, - это создать страницу перенаправления, размещенную на веб-сайте (www.example.com/fb/redirectorForApp.html), которая делает перенаправление на время ожидания javascript. Эта страница редиректора имеет теги og, которые вы хотите указать. Переадресация приземлит человека на https://www.facebook.com/PAGENAME?sk=app_APPID. Что круто о перенаправлении javascript, так это то, что перенаправление не управляется linter, поэтому оно может отображать правильные og: теги, а также позволяет пользователю перейти непосредственно на вкладку страницы. Удачи!

Ответ 2

Поскольку содержимое вашей вкладки страницы находится внутри iFrame, скребок Facebook всегда будет видеть сначала метатеги вне iFrame, которые установлены Facebook, и которые описывают вашу страницу в Facebook. Попробуйте URL-адрес в Facebook-инструменте и посмотрите внизу страницы, что скребок видит для вашего URL-адреса. К сожалению, вы не можете изменять эти метатеги Facebook из своего iFrame. Вот почему единственный способ добиться того, что вы хотите, - это переадресовать. Я сделал это, прежде чем использовать следующий код:

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" xmlns:og="http://ogp.me/ns#">
    <head>

        <!-- Facebook meta tags -->
        <meta property="og:title" content="bla"/>
        <meta property="og:url" content="https://yourdomain.com/redirect.html"/>
        <meta property="og:image" content="https://yourdomain.com/thumb.png"/>
        <meta property="og:site_name" content="bla"/>
        <meta property="fb:admins" content="1234"/>
        <meta property="og:description" content="bla"/>
        <meta property="og:type" content="website"/>
        <meta property="og:video" content="https://yourdomain.com/bla.swf?param=bla"/>
        <meta property="og:video:width" content="398"/>
        <meta property="og:video:height" content="224"/>
        <meta property="og:locale" content="de_DE"/>

        <script type="text/javascript" src="swfobject.js"></script>
    </head>
    <body>
        <!--  Check whether inside facebook -->
        <script type="text/javascript">
            function NotInFacebookFrame() {
                return top === self;
            }
            function ReferrerIsFacebookApp() {
                if(document.referrer) {
                    return document.referrer.indexOf("facebook.com") !== -1;
                }
                return false;
            }
            if (NotInFacebookFrame() || ReferrerIsFacebookApp()) {
                top.location.replace("https://www.facebook.com/PAGENAME?sk=app_APPID");
            }
        </script>
        <!-- content here -->
   </body>
</html>

Ответ 3

Я новый пользователь, поэтому я не могу комментировать ответ DMCS: -)

Но я должен был сделать это один раз, и это было также через "перенаправитель". Однако не было необходимости устанавливать тайм-аут, просто:

<html>
  <head>
    <meta ...> <!-- OG tags -->
    <script type="text/javascript">
      location = 'http://www.facebook.com/PAGENAME?sk=app_APPID';
    </script>
  </head>
</html>

Так что нет задержки.

BTW. если вы проверите URL-адрес вкладки здесь, вы увидите, что он имеет путь перенаправления через свой тег og:url, который перенаправляет из https://www.facebook.com/PAGENAME?sk=app_APPID в https://www.facebook.com/PAGENAME. Возможно, вам стоит проверить, не изменит ли вкладка "Посадка по умолчанию" вкладку "По умолчанию" на вкладке.

Ответ 4

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

Но хорошая новость - это решение! Это довольно сложно, особенно если у вас есть несколько подстраниц с разными тегами og: (например, например, в конкурсе для голосования).

Как это работает?

Это решение состоит в том, чтобы настроить ogtags на странице вашего сервера, чтобы иметь канонический URL-адрес, который перенаправляется на страницу приложения canvas - приложениям canvas разрешено указывать собственные собственные ogtags таким образом. Если затем перенаправить всех пользователей на соответствующую вкладку страницы, страница с холстом будет фактически недоступна для просмотра, но это позволит вам предоставлять пользовательские ogtags для приложения с вкладками страниц.

Шаги

  • Создайте страницу холста для вашего приложения (используйте те же URL-адреса, что и для вкладки страницы)
  • Добавьте og: теги на свою страницу так же, как обычно.
  • Установите параметр og: url в URL-адрес приложения canvas (http://apps.facebook.com/yourapp/...etc)
  • Добавьте код, чтобы, когда запрос поступает извне вкладки страницы iframe (на холсте или непосредственно на вашем сервере), вы перенаправляете пользователя на соответствующую вкладку страницы

Ответ 5

У меня был тот же вопрос... так вот что я сделал:

  • Страница перенаправления: страница, которая получит параметр и установит теги для ваших служб обмена или, по крайней мере, теги OpenGraph. Затем эта страница создаст URL-адрес второй страницы (Facebook Pagetab) следующим образом:

    //{facebook-page.link}/?sk=app_{your-app-id}&app_data=X
    

Чтобы получить {facebook-page.link}, см. этот пример запроса:
Пример: https://graph.facebook.com/200866110154
См. Документацию: https://developers.facebook.com/docs/reference/php/facebook-api/

Не выполняйте перенаправление сразу каждый раз, не будет работать. Вместо этого перенаправляйте на определенных условиях. Пример:

    if (strpos($_SERVER['HTTP_REFERER'], '//www.facebook.com/')) {
        drupal_add_js('window.location = "' . $url_final . '"', 'inline');
    }   

Помните, что для создания URL используйте атрибут ссылки на страницу, полученный из Facebook, а не идентификатор страницы, иначе вы потеряете параметр app_data в подписанном запросе.

  • Facebook Pagetab: страница, называемая внутри iframe вкладки страницы Facebook. Эта страница получит SignedRequest с app_data и загрузит конкретный контент, который будет видеть конечный пользователь.

Помните, что app_data также может быть массивом (или сериализованным объектом):

      app_data[var1]=value1&app_data[var2]=value2

Совет.. Если вы используете Drupal, вы можете избежать окончательного перенаправления, просто перепишите $_GET ['q'] на необходимость страницы. Таким образом, вы не загружаете Drupal только для другого перенаправления. Вы можете добиться этого с помощью hook_init.

Совет.. Сохраните ваши запросы в API Facebook для ускорения будущих вызовов. Каждый запрос API-интерфейса графа занимает не менее 300 мс. Доступ к базе данных, очевидно, быстрее.