FB Like按钮不喜欢自己

时间:2013-07-12 16:12:17

标签: facebook facebook-like facebook-javascript-sdk

最近,facebook推出了一些在我正在处理的页面上显然像按钮功能一样破坏的更改,特别是对于指向Facebook上的照片(photoset)的网址,例如像

这样的facebook按钮
<fb:like href="http://www.facebook.com/photo.php?fbid=ID&set=SET" ....></fb:like>

按钮呈现,但是当我点击“喜欢”时,它立即“不喜欢”自己。 *使用类似按钮的非Facebook网址正常工作,指向facebook上的照片/内容的网址会导致类似按钮在点击后立即与其自身不同。这些按钮是通过JSSDK生成的iframes。有这个问题的解决方案吗?我们没有使用og元数据。

2 个答案:

答案 0 :(得分:2)

Facebook喜欢按钮会删除网址的所有获取参数,所以尽管你有这个

<fb:like href="http://www.facebook.com/photo.php?fbid=ID&set=SET" ....></fb:like>

facebook检索到的网址是

<fb:like href="http://www.facebook.com/photo.php" ....></fb:like>

修改

正如你在7月10日可能没有注意到的那样,其中一个休息变化是社交插件的网址

  

社交插件需要'href'参数中的绝对URL   社交插件,如Like Box和Like Button,需要一个   'href'参数中的绝对URL。

https://developers.facebook.com/roadmap/#q4_2013

答案 1 :(得分:1)

我一直遇到使用Facebook的开发人员工具在自己的域上使用资源的问题,因此,始终建议使用“代理”。换句话说,您将在Web服务器上创建一个独特的资源来表示Facebook照片,此资源将获得喜欢和分享,但当用户访问该页面时,他们将被重定向到真实照片。

例如:

<fb:like href="http://www.example.com/fakeresources/photo.php?fbid=ID&set=SET" ....></fb:like>

加载http://www.example.com/fakeresources/photo.php?fbid=ID&set=SET时:

<meta property="og:title" content="The Rock" />
<script>top.location.href="http://www.facebook.com/photo.php?fbid=ID&set=SET";</script>

不幸的是,对于og:image标签,您还需要创建代理,因为Facebook刮刀通常无法从自己的服务器获取。

我甚至遇到过Facebook无法从URL获取的时间,因为URL的查询参数看起来像是在自己的服务器上的URL,例如:

http://www.example.com/fakeresources?url=facebook.com/photo.php?fbid=ID&set=SET
(query parameter not url-encoded for readability)

为此,使用rot-13对网址进行编码就足够了。