如何定制 Facebook 的 sharer.php

194630 次浏览

你所说的是 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."/>

正如您可以看到的,这里既有一个图像属性,也有一个描述。当您更改页面 og:meta标记时,可以使用 Facebook 调试器测试这些更改。它会告诉你是否犯了任何错误(以及如何纠正它们!)

更新:

这个答案已经过时了。

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

Facebook 已经改变了 sharer.php 的工作方式,易卜拉欣 · 福尔(Ibrahim Faour)对 Facebook 提交的 bug 做出了回应。

共享者将不再接受自定义参数,facebook 将从 url OG meta 标签中提取预览中显示的信息,就像它在 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')

我在没有使用图像部分的情况下快速尝试了这个方法,Share.php 窗口显示为预填充的,因此它看起来像是一个解决方案。

我通过这篇 SO 文章发现了这一点:

想要自定义的标题/图片/描述在 facebook 共享链接从一个 flash 应用程序

这个链接包含在来自 Lelis718的答案中:

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

所以这个答案都归功于 Lelis718。

【编辑2013年5月3日】-似乎原来的 URL 我在这里不再为我工作,也包括“ s = 100”在查询字符串-不知道为什么,但已相应更新

Php 不再允许您自定义。您共享的页面将被刮取为 OG 标签,这些数据将被共享。

要正确定制,使用 JS-SDK 附带的 FB.UI

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

您可以通过 URL 使用 Feed 对话框来模拟 Share.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';

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

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

3)我喜欢创建一个文件(比如 popupclose.html)来重定向用户,当他们完成共享时,这个文件将包含 <script>window.close();</script>来关闭弹出窗口

使用 Feed 对话框(除了设置之外)的唯一缺点是,如果您也管理 Pages,那么您无法选择通过 Page 共享,只有普通用户帐户可以共享。它可以给你一些非常隐晦的错误信息,其中大部分与你的 Facebook 应用程序的设置有关,或者与你分享的内容或 URL 有关。

用于分享帖子的 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>

不要使用空格,使用 &nbsp