【问题标题】:How do I customize Facebook's sharer.php如何自定义 Facebook 的 sharer.php
【发布时间】:2012-09-14 20:29:17
【问题描述】:

http://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fwww.google.com

如何自定义文本和图像。看起来 Facebook 撤下了文档。

【问题讨论】:

  • Facebook 最近禁止自定义其共享者。从现在开始,您将不得不依赖 Open Graph 标签

标签: facebook


【解决方案1】:

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

不要使用空格,使用&amp;nbsp

【讨论】:

  • 只有 u 参数有效...
【解决方案2】:

以下答案似乎不再有效,Facebook 不再接受 Feed Dialog 链接上的参数

您可以通过 URL 使用 Feed Dialog 来模拟 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';

(显然将 [CONTENT] 替换为适当的内容。此处的文档:https://developers.facebook.com/docs/reference/dialogs/feed

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

3)我喜欢创建文件(即popupclose.html)以在用户完成共享后将其重定向回,该文件将包含&lt;script&gt;window.close();&lt;/script&gt;以关闭弹出窗口

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

【讨论】:

  • 黄金!在尝试了难以置信的不可靠和容易连接错误的 JSDK 版本之后,它变得更加可靠和稳定。非常感谢!
  • 对自定义参数的对话框供稿支持今天结束(2017 年 7 月 17 日)
  • @LocalPCGuy 参数不起作用,虽然链接有效,但图像描述和标题无效,请指导我
  • /u/Sanaullah 这不再有效,Faceboook 删除了此功能。请参阅答案顶部的粗体注释。
【解决方案3】:

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

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

【讨论】:

  • 或者通过Share dialog,它可以只是一个链接,就像sharer.php一样(虽然链接将链接到Facebook应用程序,这可能不是优选的)
【解决方案4】:

更新:

这个答案已经过时了。

就像@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&amp;p[title]='+encodeURIComponent('this is a title') + '&amp;p[summary]=' + encodeURIComponent('description here') + '&amp;p[url]=' + encodeURIComponent('http://www.nufc.com') + '&amp;p[images][0]=' + encodeURIComponent('http://www.somedomain.com/image.jpg')

我在没有图像部分的情况下快速尝试了这个,sharer.php 窗口出现了预填充,所以它看起来像一个解决方案。

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

Want custom title / image / description in facebook share link from a flash app

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

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

所以这个答案归功于 Lelis718。

[编辑 2013 年 5 月 3 日] - 如果不在查询字符串中包含“s=100”,我在这里的原始 URL 似乎不再适用 - 不知道为什么,但已相应更新

【讨论】:

  • 嘿@lee-sibbald 看起来 Facebook 改变了它,我无法再让图像显示在该对话框中。有趣...
  • @JulianH.Lam 你注意到我几天前添加的编辑了吗?我正在使用上面显示的链接,包括“s=100”,它似乎工作正常
  • 嗨@LeeSibbald 我确实做到了,但它仍然无法正常工作。我最终通过使用更新的“Feed Dialog”窗口重做对话框,这也不是完美的。还是谢谢!
  • p[x] 参数似乎不再起作用,至少如果您在相关页面上有工作的 opengraph 标签。
  • 分享者不再接受自定义参数:developers.facebook.com/x/bugs/357750474364812
【解决方案5】:

您所说的是 Facebook 在您分享链接时提取的预览图像和文本。 Facebook 使用Open Graph Protocol 获取此数据。

基本上,您所要做的就是将这些 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 Debugger 测试这些更改。它会告诉你是否犯了任何错误(以及如何修复它们!)

【讨论】:

  • 我不认为这是答案......因为这些标签被硬编码到 html 中,因此强制整个页面上的任何/所有 fb 按钮都服从这些值......也许我一页上有 3 个 fb 分享按钮,我希望每个按钮都有一个自定义的图像/描述。 ...确实,您可以在共享操作之前使用 js 更改元值,但这似乎并没有真正起作用,并且动态更改元标记似乎是不好的做法(因为那不是目的)。 ...我会改用 Lee Sibbald sharer.php 解决方案。
  • 然而,话虽如此,我确实在每个页面上使用了这些元标记,以防用户只是将我的页面的 url 复制/粘贴到那里的 fb 帖子中,然后这些元就可以解决问题......但不适用于个别 fb 按钮(“分享这幅画”或“分享这个笑话”)
  • 关于动态 OG 标签生成 - 我已经使用 PHP 多次完成此操作,其中 OG 标签根据 QueryString 参数动态填充。只要参数在某种程度上对每个按钮都是唯一的,它就可以工作(例如,将“?id = 123”添加到每个按钮 URL 的末尾并将“123”更改为唯一)。在与 Facebook 的人讨论后,这并没有被标记为不好的做法,所以我相信以这种方式工作是完全可以的。但是请注意,JS 不能用于此,因为 FB 刮板没有 JS 引擎。
  • @dsdsdsdsd - 即使您要分享一个巨大的内容页面,每个内容都需要它自己的永久链接,对吧? /That/ 是您放置自定义 OG 标签的位置。
  • 所有的讨论都完成了。你如何解决 Facebook 缓存我们网站的问题。我已经搜索了超过 2 天。链接正在正确生成,但缩略图和文本不是来自帖子,而是来自我网站上以前帖子的缓存数据。有人可以对此发表评论吗?谢谢
猜你喜欢
  • 2013-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-07
  • 1970-01-01
相关资源
最近更新 更多