1

最近 facebook 推出了一些更改,这些更改显然已经破坏了我正在处理的页面上的按钮功能,特别是对于指向 facebook 上的照片(照片集)的 url,例如 facebook 按钮,如

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

The button renders, however when I click 'like' it immediately 'unlikes' itself afterwards. *Non-facebook URLs work fine with the like button, only URLs that point to photos/content on facebook cause the like button to immediately unlike itself after it's clicked. The buttons are generated via the JSSDK as iframes. Is there a solution to this problem? We're not using og metadata.

4

2 回答 2

2

Facebook like 按钮会去除 url 的所有获取参数,所以尽管你有这个

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

facebook检索到的url是这个

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

编辑

您可能在 7 月 10 日没有注意到其中一项重大变化是社交插件的网址

社交插件将需要在“href”参数中提供绝对 URL 社交插件,例如点赞框和点赞按钮,将需要在“href”参数中提供绝对 URL。

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

于 2013-07-16T14:23:54.240 回答
1

我一直在使用 Facebook 的开发者工具和自己域上的资源时遇到问题,因此,我总是推荐“代理”。换句话说,您将在您的网络服务器上创建一个独特的资源来表示 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对 URL 进行编码就足够了。

于 2013-07-16T15:23:02.360 回答