Открыть информацию о графике для ссылки на вкладку "Страница"
При отправке ссылки непосредственно на вкладку на странице Facebook,
https://www.facebook.com/PAGENAME?sk=app_APPID
Facebook собирает теги страницы Open Graph <meta>
, что означает, что сообщение ссылки связано с изображением профиля страницы, именем и описанием "Страница & bullet; n
как это".
Я надеялся, что Facebook вместо этого будет использовать теги og
<meta>
из HTML приложения, позволяя настраивать ссылки на сообщения.
Какой лучший способ предоставить прямую ссылку на конкретную вкладку на странице Facebook с настраиваемым контентом в сообщении ссылки?
Ответы
Ответ 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 мс. Доступ к базе данных, очевидно, быстрее.