Хотите пользовательский заголовок / изображение / описание в 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".
Проверьте это.
У меня была такая же проблема неделю назад.
Прежде всего я заметил, что вашему 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.