花了几个小时在网上搜索后,我发现了很多与此相关的帖子,但似乎没有一个有效,甚至 jsfiddle 上的一些“有效”示例似乎也无效!
当用户在我的网页上点击“喜欢”时,我想注册。
'like' 链接出现,并且确实会弹出一个新窗口供您登录 facebook。但我无法订阅“edge.create”事件。我知道 sdk 加载正常,因为我可以订阅“xfbml.render”事件。
有些帖子说你必须有一个 appId 才能工作[我愿意],但其他人声称它没有。
这是我的代码:
需要注意的一点是,我目前在 //localhost:57477 下运行它,所以我将 like href 设置为 google.com。我确实注意到其中一篇文章指出了最近的 facebook 错误,如果 href 域与网页的域不匹配,则不会触发此事件,但现在将其标记为“已修复”。
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function () {
//console.log('window.fbAsyncInit');
FB.init({
appId: 'myappid',
status: false,
cookie: false,
xfbml: true
});
//Additional initialization code here
FB.Event.subscribe('edge.create',
function (response) {
//console.log('edge.create');
alert('edge.create');
}
);
FB.Event.subscribe('xfbml.render',
function (response) {
//console.log('xfbml.render');
alert('xfbml.render');
}
);
};
// Load the SDK Asynchronously
(function (d) {
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) { return; }
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
} (document));
</script>
<div href="http://google.com" class="fb-like" data-send="false" data-width="450" data-show-faces="false" data-font="verdana"></div>