我正在制作一款闪光应用程序,可以在以不同速度行驶时显示出人体交通伤害。我希望用户能够在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应用程序内的计算。
答案 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”数组中。
检查出来。
答案 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获取值。
选项包括:
重新
OP非常清楚地表明他已经知道你可以从一个页面提供服务,但是想要将值直接传递给facebook(而不是通过目标页面)。为什么这个被投票?这是不对的。您可以 - 支持将自定义标题,说明和图像添加到您的共享。我一直这样做。 - Dustin Fineout 3小时前
此外,请注意我提供了3个不同的选项来解决这个问题,其中一个是您稍后发布的答案。您的选择不是OP尝试如何做到这一点,它只是一个解决方法,因为Facebook的限制。
最后,就像我一样,你应该提到特定的解决方案是有缺陷的,因为你可以很容易地达到URL大小限制。