有人能告诉我为什么回调不适用于下面给出的类似按钮代码吗?据我所见,该代码是用JavaScript设置的标准代码。初始化第一个按钮,然后异步加载API,并提供回调函数。
<div id="fb-root"></div>
<script>
window.fbAsyncInit=function(){
FB.init({
appId:'',//App ID
status:false,// check login status
cookie:true,// enable cookies to allow the server to access the session
xfbml:true// parse XFBML
});
// Additional initialization code here
FB.Event.subscribe('edge.create', function(response) {
//alert("user_id1:<?php echo $user_id1; ?>, user_id2:<?php echo $user_id2; ?>");
/*var data={
action:"ap_buttons_give_points",
author_id:<?php echo $author_id; ?>,
post_id:<?php echo $post_id; ?>,
type:"like"
}
jQuery.post("<?php echo $ajax_url; ?>",data,function(resp){
});*/
alert('You just liked the page!');
});
FB.Event.subscribe('edge.remove', function(response) {
/*var data={
action:"ap_buttons_take_points",
author_id:<?php echo $author_id; ?>,
post_id:<?php echo $post_id; ?>,
type:"like"
}
jQuery.post("<?php echo $ajax_url; ?>",data,function(resp){
//alert("fb remove:"+resp);
});*/
alert('You just unliked the page!');
});
};
// 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>
是的,代码看起来不错。我也有同样的问题,但只有类似fb的按钮,iframe版本。我在你的例子中没有看到fb按钮,所以我不知道你用的是哪一个。。。所以,根据我的经验,使用标准的fb。
我唯一一次出现这种情况是在使用iframe版本的Like按钮时。我发现回调在那个版本中根本不起作用。如果是这种情况,您将希望使用此处的Javascript SDK版本,可以使用XFBML或HTML5:
<fb:like send="true" width="450" show_faces="true"></fb:like>
或
<div class="fb-like" data-send="true" data-width="450" data-show-faces="true"></div>