我花了好几天试图解决这个问题而没有成功。问题是,当用户点击类似按钮时,它并不表示他们喜欢墙上的任何东西。虽然代码在我的localhost上的测试设置中正常工作,但它在生产中不起作用。
我的客户端正在使用wordpress的图片库插件以及一个名为FancyBox的灯箱插件,以便在用户点击缩略图时显示更大版本的图片。他让我在每个fancybox上添加一个像facebook一样的按钮。
由于fanybox是动态生成的,因此每当渲染fancybox时,我都会生成一个新的if按钮iframe。 like按钮iframe使用的URL对于用户点击的图片是唯一的。该代码将& photo = / location / of / photo.jpg添加到图库URL。然后整个自定义URL通过encodeURIComponent()传递给iframe。
以下是用于生成iframe的代码段
var currentURL = document.URL,
currentIMG = $("#fancybox-img").attr("src").split("http://www.downsplash.com").pop();
if (currentURL.match("&photo=")) {
var currentURL = currentURL.split("&photo=").shift();
};
var thisURL = encodeURIComponent(currentURL + "&photo=" + currentIMG);
<span id="fancybox-title-over">
<div id="facebook-like" style="display:inline-block;">
<iframe src="//www.facebook.com/plugins/like.php?href=" + thisURL + "&send=false&layout=button_count&width=80&show_faces=true&action=like&colorscheme=dark&font&height=21&appId=314592468583405" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:80px; height:21px;" allowTransparency="true"></iframe>
</div>
</span>
Here is a link to the code running in production.
类似的按钮代码似乎没有任何障碍,它可以让你喜欢和不喜欢的照片。唯一的问题是,当喜欢照片时,用户墙上不会出现任何内容。
注意:
我不确定为什么这些喜欢没有出现在用户的Facebook墙上。有没有人有任何想法?
答案 0 :(得分:0)
正如Heera所指出的,生产代码IS正在运作,但当Facebook发布到用户墙时,它会发布投资组合的网址,不包括&amp; photo = / location / of / photo.jpg。这种情况正在发生,因为标题中有一个Open Graph元标记,用于向Facebook提供投资组合URL,仅此而已。
<meta property="og:url" content="http://www.downsplash.com/?portfolio=portraits">
由于我已经喜欢投资组合网址,因此我无法在自己的墙上看到帖子。事实证明,这个开放图形标签会被“简单Facebook Connect”和“Tweet,Like,Google+和Share”插件自动添加到标题中。这也解释了为什么我的代码在我的localhost测试站点上运行,因为当我喜欢照片时,Facebook无法扫描localhost以获取打开的图形标记。
感谢您的帮助!
编辑:
在我禁用插件并确保我的开放图形标签在html中正确显示后,我遇到了与Facebook缓存给定URL的开放图形标签相关的问题。这导致先前不正确的URL重定向继续发生。我通过访问Facebook's Open Graph Debugger并输入网址来解决此问题。这会导致Facebook刷新页面的开放图形标记的缓存。