想要从Flash应用程序的Facebook共享链接中自定义标题/图像/描述

时间:2010-03-08 11:36:29

标签: flash facebook facebook-sharer

  

可能重复:
  How does Facebook Sharer select Images?

我正在制作一款闪光应用程序,可以在以不同速度行驶时显示出人体交通伤害。我希望用户能够在Facebook上分享这些信息。但是,这要求我可以自定义以某种方式显示在Facebook上的文本。

我正在制作一个在空白窗口中打开的网址(来自Flash应用程序本身)。我指定了u和t参数,将生成的消息作为t参数。但这似乎总是被页面标题所覆盖。如果我省略html代码中的title标签,则使用文件名(也覆盖指定的标题)。

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

我也尝试过url-encoding url,但无济于事。

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

我也尝试过使用addthis API,但遇到了同样的缺点。有趣的是,如果我发布swf,标题和描述可以自定义,并且还可以指定屏幕截图。但如果我不发布瑞士法郎,这似乎被忽略了。

我知道我可以在html页面上使用元标记来指定缩略图图像,标题和描述,但是这些内容中的一些必须基于Flash应用程序内的计算。

6 个答案:

答案 0 :(得分:65)

2016年更新

使用Sharing Debugger找出问题所在。

确保您关注Facebook Sharing Best Practices

确保您正确使用Open Graph Markup

原始答案

我同意此处已经说过的内容,但per documentation on the Facebook developer site,您可能希望使用以下元标记。

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

如果您无法使用元标记实现目标,并且需要URL嵌入版本,请参阅@ Lelis718的answer below

答案 1 :(得分:29)

我认为这个网站有解决方案,我现在就测试一下。 好像facebook已经改变了share.php的参数所以,为了自定义共享窗口文本和图像,你必须将参数放在“p”数组中。

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

检查出来。

答案 2 :(得分:4)

一周前我遇到了同样的问题。

首先,我注意到你的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>

如果这对你有用,请告诉我,这基本上是对我有用的。)

答案 3 :(得分:2)

我实际上有类似的问题。我有一个带有多个单选按钮的页面;每个按钮都会在更改时通过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获取页面加载后更改的最新值。

答案 4 :(得分:2)

我有一个显示内容的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"

希望这会有所帮助...

答案 5 :(得分:0)

你不能,它只是不支持它。

我不得不问,为什么这些计算只需要在Flash应用程序中进行?

您必须导航到与您从Flash应用中获得的元数据明确相关的网址。否则,Flash应用程序将如何根据您点击的URL获取值。

选项包括:

  • 在页面上计算:在提供页面时,您需要在服务器上执行相同的计算,并在页面元数据上发送标题等。
  • 将查询字符串中的元数据发送到您的网站:如果您确实必须将计算保留在服务器之外,另一种方法是在用户点击进入的网址中明确设置元数据你的网站来自Facebook。处理页面时,只需将其复制回元数据部分(不要忘记进行适当的编码)。由于网址大小的限制,这显然是有限的。
  • 将查询字符串中的计算结果发送到您的网站:如果这些计算只是为您提供元数据中使用的几个数字,那么您可以在网址的查询字符串中包含这些数字用户点击返回您的网站。这更有可能不会给你带来URL大小的问题。

重新

  

为什么这个被投票?这是不对的。您可以 - 支持将自定义标题,说明和图像添加到您的共享。我一直这样做。 - Dustin Fineout 3小时前

OP非常清楚地表明他已经知道你可以从一个页面提供服务,但是想要将值直接传递给facebook(而不是通过目标页面)。

此外,请注意我提供了3个不同的选项来解决这个问题,其中一个是您稍后发布的答案。您的选择不是OP尝试如何做到这一点,它只是一个解决方法,因为Facebook的限制。

最后,就像我一样,你应该提到特定的解决方案是有缺陷的,因为你可以很容易地达到URL大小限制。