Хотите пользовательский заголовок / изображение / описание в Facebook поделиться ссылкой из флэш-приложения

Возможный дубликат:
Как Facebook Sharer выбирает изображения?

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

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

http://www.facebook.com/sharer.php?u=http://espentokerud.com/face/addiste.html&t=test;

Я также попытался url-кодирование URL, но безрезультатно.

http://www.facebook.com/sharer.php?u=http%3a%2f%2fespentokerud.com%2fface%2faddiste.html&t=test;

Я также пытался использовать API addthis, но испытывал те же недостатки. Самое смешное, что если я отправляю SWF, заголовок и описание можно настроить, а также можно указать снимок экрана. Но если я не публикую SWF, это, кажется, игнорируется.

Мне известно, что я могу использовать метатеги на html-странице, чтобы указать миниатюрное изображение, заголовок и описание, но часть этого контента должна основываться на вычислениях внутри приложения Flash.

6 ответов

Обновление 2016

Используйте Sharing Debugger, чтобы выяснить, в чем заключаются ваши проблемы.

Убедитесь, что вы следуете рекомендациям Facebook Sharing.

Убедитесь, что вы правильно используете разметку Open Graph.

Оригинальный ответ

Я согласен с тем, что уже было сказано здесь, но для документации на сайте разработчиков Facebook вы можете использовать следующие метатеги.

<meta property="og:title" content="title" />
<meta property="og:description" content="description" />
<meta property="og:image" content="thumbnail_image" />

Если вы не можете достичь своей цели с помощью метатегов и вам нужна встроенная версия URL, см. Ответ @Lelis718 ниже.

Я думаю, что у этого сайта есть решение, я проверю это сейчас. Похоже, что facebook изменил параметры файла share.php, поэтому, чтобы настроить текст и изображения окна общего доступа, вы должны поместить параметры в массив "p".

http://www.daddydesign.com/wordpress/how-to-create-a-custom-facebook-share-button-for-your-iframe-tab/

Проверьте это.

У меня была такая же проблема неделю назад.

Прежде всего я заметил, что вашему URL-адресу предшествует строка параметра с амперсандом, но, вероятно, вместо него должен стоять вопросительный знак для начала строки параметра, за которым следует амперсанд между каждым дополнительным параметром.

Теперь вам нужно экранировать свой URL, а также дважды экранировать параметры URL (заголовок или другой контент, который вам нужен для предоставления контента в общем ресурсе), который вы передаете на URL, следующим образом:

var myParams = 't=' + escape('Some title here.') + '&id=' + escape('some content ID or any other value I want to load');
var fooBar = 'http://www.facebook.com/share.php?u=' + escape('http://foobar.com/superDuperSharingPage.php?' + myParams);

Теперь вам нужно создать вышеупомянутый superDuperSharingPage.php, который должен содержать динамический заголовок, описание и изображение, которое вы хотите. Что-то вроде этого должно быть достаточно:

<?php
    // get our URL query parameters
    $title = $_GET['t'];
    $id = $_GET['id'];
    // maybe we want to load some content with the id I'll pretend we loaded a
    // description from some database in the sky which is magically arranged thusly:
    $desciption = $databaseInTheSky[$id]['description'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title><?php echo $title;?></title>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <meta name="title" content="<?php echo $title;?>" />
  <meta name="description" content="<?php echo $desciption;?>" />
  <!-- the following line redirects to wherever we want the USER to land -->
  <!-- Facebook won't follow it. you may or may not actually want || need this. -->
  <meta http-equiv="refresh" content="1;URL=http://foobar.com" />
</head>
<body>
  <p><?php echo $desciption;?></p>
  <p><img src="image_a_<?php echo $id;?>.jpg" alt="Alt tags are always a good idea." /></p>
  <p><img src="image_b_<?php echo $id;?>.jpg" alt="Make the web more accessible to the blind!" /></p>
</body>
</html>

Дайте мне знать, если это работает для вас, это по сути то, что сделал для меня:)

У меня на самом деле похожая проблема. У меня есть страница с несколькими переключателями; каждая кнопка устанавливает метатеги заголовка и описания страницы через JavaScript при изменении.

Например, если пользователи выбирают первую кнопку, метатеги скажут:

<meta name="title" content="First Title">
<meta name="description" content="First Description">

Если пользователь выберет вторую кнопку, это изменит метатеги на:

<meta name="title" content="Second Title">
<meta name="description" content="Second Description">

... и так далее. Я подтвердил, что код работает нормально через Firebug (то есть я вижу, что эти два тега были правильно изменены).

Очевидно, что Facebook Share извлекает только метатеги заголовка и описания, которые доступны при загрузке страницы. Изменения в этих двух тегах после загрузки страницы полностью игнорируются.

У кого-нибудь есть идеи, как это решить? То есть, чтобы заставить Facebook получать последние значения, которые меняются после загрузки страницы.

У меня есть модуль Joomla, который отображает материал... и я хочу иметь возможность делиться этим материалом на Facebook, а не с мета-описанием заголовка страницы... поэтому мой обходной путь - иметь секретный файл.php на исполняемом сервере когда он обнаруживает FB

$_SERVER['HTTP_USER_AGENT']

if($_SERVER['HTTP_USER_AGENT'] != 'facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)') {
    echo 'Direct Access';
} else {
    echo 'FB Accessed';
}

и передайте переменные с URL-адресом, который форматирует эту конкретную страницу с заголовком и мета-описанием элемента, которым я хочу поделиться из моего модуля joomla...

name="fb_share" share_url="MYURL/sharer.php?title=TITLE&desc=DESC"

надеюсь это поможет...

Вы не можете, это просто не поддерживает.

Я должен спросить, почему эти вычисления должны происходить только внутри приложения Flash?

Вы должны перейти к URL-адресу, который явно относится к метаданным, которые вы получаете из приложения Flash. В противном случае, как флэш-приложение узнает значения в зависимости от того, какой URL вы нажали.

Варианты:

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

ре

Почему за это проголосовали? Это не правильно. Вы МОЖЕТЕ - поддерживается добавление пользовательского заголовка, описания и изображений в ваш ресурс. Я делаю это все время. - Dustin Fineout 3 часа назад

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

Кроме того, обратите внимание, что я дал 3 различных варианта решения этой проблемы, один из которых вы опубликовали в ответе позже. Вы выбираете не то, как ОП пытался это сделать, а просто обходной путь из-за ограничений на Facebook.

Наконец, как и я, вы должны упомянуть, что конкретное решение имеет недостатки, поскольку вы можете легко преодолеть ограничение размера URL.

Другие вопросы по тегам