最近,facebook推出了一些在我正在处理的页面上显然像按钮功能一样破坏的更改,特别是对于指向Facebook上的照片(photoset)的网址,例如像
这样的facebook按钮<fb:like href="http://www.facebook.com/photo.php?fbid=ID&set=SET" ....></fb:like>
按钮呈现,但是当我点击“喜欢”时,它立即“不喜欢”自己。 *使用类似按钮的非Facebook网址正常工作,仅指向facebook上的照片/内容的网址会导致类似按钮在点击后立即与其自身不同。这些按钮是通过JSSDK生成的iframes。有这个问题的解决方案吗?我们没有使用og元数据。
答案 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。
答案 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对网址进行编码就足够了。