Stack溢出的Facebook“共享”按钮如何工作?

时间:2011-09-21 19:38:20

标签: php javascript facebook social-networking

我希望在我们的网站上添加社交图标,让客户能够在他们的脸书和推特个人资料上“喜欢”,发推和分享内容。我注意到这个方框的左边,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>

我们的网站以这种方式运作:虽然任何人都可以随时访问主要网站,但是个人可以使用自己独特的网址注册为代表,这些网址可作为推荐人,为奖励提供“信用”。我已经审查了facebook开发者网站,说实话我有点不知所措。我想让我们的会员能够从他们的仪表板中点击Facebook图标,提示他们在墙上张贴设置图像,设置标题和描述。我在文档中看到这是通过在头部设置元标记来完成的,但它对我的网站似乎并不重要(或者我显然做错了)。

如果Facebook正在查找的URL(共享URL)位于受密码保护的页面或网站的某个区域后面,该区域不允许基于缺少的PHP SESSION变量的内容?

修改

我也在网上看到很多说我必须整合Facebook JS SDK,然后继续讨论在墙上写的身份验证/许可等等。是的,左边的链接没有请求允许除了1)登录FB帐户,2)在用户墙上发布以外的任何事情。 This site is a perfect example

上面的链接很棒,但它假设我需要授权在此网站上不会出现的“分享”。

1 个答案:

答案 0 :(得分:3)

当您单击共享按钮时,您将在facebook.com上调用脚本,然后该脚本将访问查询字符串中指向的页面(?u = xxxxxx)。

Facebook将解析该页面并抓取它找到的前几张图片,从页面中获取描述和标题。这就是它向您显示的内容,并允许您添加一些其他文本(以及编辑标题/描述/并选择不同的图像)。

如果该页面包含facebook要求您添加到页面的特定元标记,那么他们将使用这些标记来填充标题/描述/图像。这允许网页作者控制他们的页面在Facebook提要中的显示方式(尽管用户仍然可以在发布之前对其进行编辑)。这些元标记需要在Facebook的特定页面中使用。

如果facebook无法访问该页面,因为它受密码保护等等 - 那么它无法解析元标记,然后只会向用户显示URL作为标题而没有描述和缩略图。