我只是想在测试页面上测试一些类似的功能,但却出现了意想不到的行为。当我点击点赞按钮时,对话框(你可以在墙上添加文本和帖子的对话框)会弹出大约半秒钟,然后自动关闭。点赞按钮本身会变成一个链接,上面写着"确认"。我真的很清楚,不确定会出什么问题。我正在使用FBML。这是我的测试页面的完整代码:
<!DOCTYPE html>
<html>
<head>
<title>Facebook Like Test</title>
</head>
<body>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function () {
FB.init({
appId: 'myid',
status: true, // check login status
cookie: true, // enable cookies to allow the server to access the session
xfbml: true // parse XFBML
});
};
// Load the SDK Asynchronously
(function (d) {
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) { return; }
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
} (document));
</script>
<h1>Facebook Like Testing</h1>
<div>
<fb:like href = "http://www.example.com?id=1"></fb:like>
</div>
<div>
<fb:like href = "http://www.example.com?id=2"></fb:like>
</div>
<div>
<fb:like href = "http://www.example.com?id=3"></fb:like>
</div>
<div>
<fb:like href = "http://www.example.com?id=4"></fb:like>
</div>
</body>
</html>
我只是简单地附加了一个任意值作为查询字符串,以使hrefs唯一。这里可能出了什么问题?
控制台输出如何?有什么错误吗?
我想,你应该检查你的应用程序和本地环境的域设置。你的例子非常适合我。
我脑海中浮现的最后一件事是,如果你使用Chrome,它有时会阻止跨域js请求,所以我也会寻找它。
好吧,我要回答我自己的问题,因为我发现了这个问题,希望其他出现这个错误的人都能得到答案。
事实证明,问题不在于我的代码,而在于我指定的href。我找到了答案在这里这与我实施这项计划的网站不够知名或被标记为"可疑"有关。
我也遇到了同样的问题,事实证明,问题是我在chrome上禁用了cookie。一旦我启用了它们,它又开始工作了。
如果您提到的测试页面位于暂存服务器上,或者使用的URL不是Like实际所在的网站,则会导致Like对话框关闭,因为用户尝试点赞页面时会执行域匹配检查。
我过去发现,在实时服务器上的隐藏页面上执行测试会给你带来你想要的结果。
如果您在首次测试"点赞"按钮后对页面进行了更改,请确保在页面上使用Facebook开发者调试工具来重新构建Facebook存储的缓存页面。https://developers.facebook.com/tools/debug/
仔细检查共享URL的开放图声明:一个简单的错误是og上缺少域名:image声明将导致共享对话框弹出关闭,而没有任何控制台或错误消息。(只需执行控制-u即可查看HTML页面的源代码,查看您的标题区域中的og:image、og:url等)