所以我有一个网站,让我们称之为foo.com
,所有页面都有喜欢按钮插件(每个页面上都重新编写了相同的代码)
所以我"喜欢"http://foo.com
我墙上的帖子带有链接,一切都很好,很花花公子
我对我的项目页面做同样的事情 - http://foo.com/projects
当您喜欢它时,它会在信息中说(单击喜欢时发生的下拉列表)他们"喜欢"http://foo.com/projects
。一切都很好;然而,Facebook上的实际链接是:
http://foo.com/projects?fb_action_ids=10151073089123411&fb_action_types=og.likes&fb_source=other_multiline&action_object_map=%7B"10151073089123411"%3A10151036996391185%7D&action_type_map=%7B"10151073089123411"%3A"og.likes"%7D&action_ref_map=%5B%5D
这不仅丑陋,还意味着/projects 页面的 like 按钮不计入,而是新的/projects?fbcrap=....
{编辑}
还注意到,你实际上可以进入一个无限循环。
人 A 喜欢http://foo.com/projects
人员 B 点击人员 A 墙上的链接http://foo.com/projects
B喜欢http://foo.com/projects?randomhashstuff
人员 C 点击用户 B 墙上的链接http://foo.com/projects?randomhashstuff
C人喜欢http://foo.com/projects?anotherrandomhash
结果:
-
/projects
= 1 喜欢 -
/projects?randomhash
= 1 喜欢 -
/projects?anotherrandomhash
= 1 喜欢
/projects
应该有 3 个赞的地方。
它不仅丑陋,还意味着/projects 页面的 like 按钮不计算在内,但新的/projects?fbcrap=WHYAREYOUHERE
将用于og:url
的 Open Graph 元标记放入您的/projects
页面中,并让它说页面的 URL 实际上是http://example.com/projects
的,无论可能附加哪种查询字符串参数。
当Facebook的抓取工具获取http://example.com/projects?fbcrap=WHYAREYOUHERE
当这个地址即将被喜欢时,Facebook会意识到实际的地址/URL只是http://example.com/projects
,因此它应该计算这个URL的类似,而不是其他东西。
看这里,看起来你应该在喜欢按钮中指定href
:
<fb:like href="http://pandaz.co.uk/projects/" width="450" height="80"/>
此外,您应该考虑在 HTML 顶部重新组织 og:
元数据,就在header
中的title
之后。
干杯阿波克
我很确定这是故意的,额外的参数允许您识别哪个"喜欢"触发了(入站)用户看到的故事,并告诉您他们在Facebook上的位置看到并点击了它。
有文档显示了许多可能的fb_source
参数(https://developers.facebook.com/docs/fb_source/)和fb_action_ids
,fb_action_types
包含 Open Graph 操作类型和 ID,这些类型和 ID 有助于用户点击的故事(即 X 喜欢 Y 和 Z SiteName 上的其他页面将有多个操作 ID,代表单击的每个喜欢按钮)
{edit} 正如 CBroe 所说,解决这个问题的方法是在您的网站上设置一组 Open Graph 元标记,这些元标记告诉 Facebook 内容/对象本身的 URL,即使使用其他查询字符串参数访问它也是如此。