Lix*_*Lix 77

你所说的是Facebook共享链接时提取的预览图像和文字.Facebook使用开放式图形协议来获取这些数据.

基本上,您所要做的就是将这些og:meta标记放在您要共享的URL上 -

<meta property="og:title" content="The Rock"/>
<meta property="og:type" content="movie"/>
<meta property="og:url" content="http://www.imdb.com/title/tt0117500/"/>
<meta property="og:image" content="http://ia.media-imdb.com/rock.jpg"/>
<meta property="og:site_name" content="IMDb"/>
<meta property="fb:admins" content="USER_ID"/>
<meta property="og:description"
      content="A group of U.S. Marines, under command of
               a renegade general, take over Alcatraz and
               threaten San Francisco Bay with biological
               weapons."/>
Run Code Online (Sandbox Code Playgroud)

如您所见,有图像属性和描述.更改页面og:meta标记时,可以使用Facebook调试程序测试这些更改.它会告诉你你是否犯过任何错误(以及如何修复它们!)

  • 我不认为这是答案...因为这些标签被硬编码到html中,因此强制整个页面上的任何/所有fb按钮都遵守这些值......也许我在一个页面上有3个fb共享按钮,我希望每个人都有自定义的图像/描述....是的,您可以使用js在共享操作之前更改元值,但这似乎并没有真正起作用,动态更改元标记似乎是不好的做法(因为这不是有用的)....我会使用Lee Sibbald sharer.php解决方案. (8认同)
  • 关于动态OG标签生成 - 我已经使用PHP在多个场合完成了这项工作,根据QueryString参数动态填充OG标签.只要参数在某些方面对每个Button都是唯一的(例如,在每个Button URL的末尾添加"?id = 123"并将"123"更改为唯一),它就会起作用.在Facebook上与人们进行过讨论后,这并没有被标记为不良做法,所以我相信以这种方式工作是完美的.但请注意,由于FB scraper没有JS引擎,因此无法使用JS. (3认同)
  • @dsdsdsdsd - 即使你正在分享一个巨大的内容页面,每个内容都需要它自己的perma-link,对吧?/那是你放置自定义OG标签的地方. (2认同)

Sno*_*uto 57

更新:

这个答案已经过时了.

就像@ jack-marchetti在他的评论中所述,以及@devantoine的链接:https://developers.facebook.com/x/bugs/357750474364812/

Facebook改变了sharer.php的工作方式,因为Ibrahim Faour回复了Facebook提交的漏洞.

共享者将不再接受自定义参数,Facebook将从url OG元标记中以与作为帖子在Facebook上显示的方式相同的方式提取预览中显示的信息.


试试这个(在这个例子中通过Javascript):

'http://www.facebook.com/sharer.php?s=100&p[title]='+encodeURIComponent('this is a title') + '&p[summary]=' + encodeURIComponent('description here') + '&p[url]=' + encodeURIComponent('http://www.nufc.com') + '&p[images][0]=' + encodeURIComponent('http://www.somedomain.com/image.jpg')

我在没有图像部分的情况下快速尝试了这一点,并且sharer.php窗口显示为预先填充,因此它看起来像一个解决方案.

我通过这篇SO文章找到了这个:

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

这个链接包含在Lelis718的回答中:

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

所以所有这些都归功于Lelis718的答案.

[编辑2013年5月3日] - 似乎我在这里的原始网址不再适用于我,而不包括查询字符串中的"s = 100" - 不明白为什么但是已相应更新

  • p [x] params似乎不再起作用,至少如果你在相关页面上有工作的opengraph标签. (3认同)
  • 分享者不再接受自定义参数:https://developers.facebook.com/x/bugs/357750474364812/ (2认同)

Loc*_*Guy 21

看来以下答案不再有效,Facebook不再接受Feed对话链接上的参数

您可以通过URL使用Feed对话框来模拟Sharer.php的行为,但它有点复杂.您需要一个Facebook应用程序设置,其中包含您计划共享的URL的基本URL.然后,您可以执行以下操作:

1)创建一个类似的链接:

   http://www.facebook.com/dialog/feed?app_id=[FACEBOOK_APP_ID]' +
        '&link=[FULLY_QUALIFIED_LINK_TO_SHARE_CONTENT]' +
        '&picture=[LINK_TO_IMAGE]' +
        '&name=' + encodeURIComponent('[CONTENT_TITLE]') +
        '&caption=' + encodeURIComponent('[CONTENT_CAPTION]) +
        '&description=' + encodeURIComponent('[CONTENT_DESCRIPTION]') +
        '&redirect_uri=' + FBVars.baseURL + '[URL_TO_REDIRECT_TO_AFTER_SHARE]' +
        '&display=popup';
Run Code Online (Sandbox Code Playgroud)

(显然用适当的内容替换[CONTENT].文档:https://developers.facebook.com/docs/reference/dialogs/feed)

2)单击共享链接,在弹出窗口中使用JavaScript打开该链接

3)我喜欢创建文件(即popupclose.html)以将用户重定向到他们完成共享时,此文件将包含<script>window.close();</script>以关闭弹出窗口

使用Feed对话框(除了设置)的唯一缺点是,如果您也管理页面,则无法选择通过页面共享,只有普通用户帐户可以共享.它可以为您提供一些非常神秘的错误消息,其中大部分都与您的Facebook应用程序的设置或您正在共享的内容或URL有关.

  • 金!在尝试了令人难以置信的不可靠且易于连接错误的JSDK版本之后,这更加可靠和稳定.非常感谢! (2认同)

Jac*_*tti 14

Sharer.php不再允许您自定义.您将共享您共享的页面以获取OG标记,并且将共享该数据.

要正确定制,请使用FB.UIJS-SDK附带的.


小智 5

用于分享帖子的 Facebook sharer.php 参数。

<a href="javascript: void(0);"
   data-layout="button"
   onclick="window.open('https://www.facebook.com/sharer.php?u=MyPageUrl&summary=MySummary&title=MyTitle&description=MyDescription&picture=MyYmageUrl', 'ventanacompartir', 'toolbar=0, status=0, width=650, height=450');"> Share </a>
Run Code Online (Sandbox Code Playgroud)

不要使用空格,使用&nbsp.