Facebook在Stack Overflow上的“分享”按钮是如何工作的?

3

我希望在我们的网站上添加社交图标,使客户能够在他们的Facebook和Twitter个人资料上“喜欢”,推文和分享内容。我注意到在此框的左侧,Facebook和Twitter图标完全符合我的要求,但我不熟悉如何实现这一点。查看源代码,有JS引用:

<script type="text/javascript">
  StackExchange.ready(function() {
    var shareUrl = "http%3a%2f%2fstackoverflow.com%2fq%2f7505636%2f337690";
    var shareMsg = "Advice+integrating+Facebook+%27share%27+and+link%2fimage+capabilities+with+our+site";   
    StackExchange.share.facebook($("#fb-share-7505636"), shareUrl, shareMsg);
    StackExchange.share.twitter($("#twitter-share-7505636"), shareUrl, shareMsg);
});
</script>

我们的网站运作方式如下:任何人都可以随时访问主站,但个人可以注册成为代表,并拥有自己独特的URL,作为推荐人来获得奖励积分。我已经查看了Facebook开发者网站,说实话,我有点不知所措。我想让我们的会员能够从他们的仪表板内点击Facebook图标,提示他们在自己的墙上发布一张图片、设置标题和描述。我在文档中阅读到这是通过在头部设置meta标签来完成的,但似乎对我的网站并没有影响(或者我显然做错了)。如果Facebook要查找的URL(分享URL)位于受密码保护的页面或不允许基于缺少PHP SESSION变量的内容区域,该怎么办?
编辑
我在网上看到很多内容都说我需要集成Facebook JS SDK,但随后又谈到身份验证/写墙权限等问题。是的,左侧的链接不会要求除1)登录FB账户,2)在用户的墙上发布之外的任何权限。 这个网站是一个完美的例子 上面的链接很好,但它假设我需要授权“分享”,而这个网站上并没有这种情况发生。
1个回答

3
当您点击分享按钮时,会调用Facebook.com上的一个脚本,然后依次访问查询字符串(? U = xxxxxx)指向的页面。
Facebook将解析该页面并获取它找到的前几张图片,并从页面中获取描述和标题。这就是它向您展示的内容,并允许您添加一些附加文本(以及编辑标题/描述/选择不同的图像)。
如果该页面包含Facebook要求您添加到页面中的特定元标记,则会使用这些元标记来填充标题/描述/图像。这使得网页作者可以控制其页面在Facebook动态中的显示方式(尽管用户仍然可以在发布之前对其进行编辑)。这些元标记需要在该特定页面中才能被Facebook使用。
如果Facebook无法访问该页面,因为它受到密码保护等限制,则无法解析元标记,并仅向用户显示URL作为标题,而没有描述和缩略图。

哪个脚本正在FB上被调用,他们如何获取内容?我认为这不仅仅是这样,因为我可以轻松地替换上面的share.php链接中的URL,它将发布到Facebook墙上,但不包括图像或内容。 - JM4
抱歉,我指的是你之前提供的链接。这里是答案:一切都在URL中:http://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fstackoverflow.com%2Fq%2F7505636%2F844726&ref=fbshare&t=How+does+the+Facebook+%27share%27+button+on+Stack+overflow+work%3F <-- 这是当用户点击帖子上的FB分享按钮时stackoverflow调用的URL。如果您使用此URL,则用户将必须进行身份验证才能发布到他们的页面。您将无法代表他们发布,因此您不需要请求权限等。 - swatkins
之前的链接格式相同,不同的网站,但我明白你的意思。难道没有一种方法可以从现有的Facebook页面中提取标题/描述/图像吗?也许这是一个完全不同的问题,但如果我可以通过简单修改元标记和链接来创建一个“分享”按钮,那么使用JS SDK 2.0或PHP 3.0 SDK的目的是什么,除了将用户登录到网站? - JM4
@JM4:SDK用于允许您代表他们发布内容;分享脚本用于允许他们从您页面上的链接发布到他们的墙上。 - swatkins
1
@JM4:StackExchange函数用于构建分享页面的URL和弹出窗口。 - swatkins
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接