我插入了以下有效的插件:
<fb:comments href="http://www.mysite.com/" width="580" num_posts="10"></fb:comments>
当有人添加评论时,此评论应该在其他网站上发布到特定帖子。对于此操作,必须要求用户许可。
当有人点击插入注释按钮时,事件侦听器FB.Event.subscribe('comment.create'...被触发。
然后,如果用户未授予发布权限,则会打开一个弹出窗口并要求用户发布到其他页面的权限。然后插入的注释将从数据库中提取(因为在变量comment_response的回调中,没有带有注释消息的变量)。
问题是,fql.query的回调的变量响应是空的。 我还试着用超时等待几秒钟。
如果我获取comment_response.commentID的输出并在其他回调之外硬编码并刷新页面,我会得到一个结果。
此外,如果我执行一个简单的请求,比如拉取名称而不是查询注释,我也会得到一个结果。这段代码怎么了?
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
var post_id = 64564346456756;
var user_id = 12434566778788;
// init the FB JS SDK
FB.init({
appId : '75645367543465745', // App ID from the App Dashboard
status : true, // check the login status upon init?
cookie : true, // set sessions cookies to allow your server to access the session?
xfbml : true // parse XFBML tags on this page?
});
//post comment
FB.Event.subscribe('comment.create', function(comment_response){
//console.log( comment_response );
//try to post on fanpage ... login
FB.login(function(login_response) {
//console.log(response);
// user is logged in and granted permissions.
if (login_response.authResponse) {
//get comment
//comment_response.commentID comment_response.href
//console.log( comment_response.commentID );
FB.api({
method: 'fql.query',
query: "SELECT text FROM comment WHERE post_fbid = '"+comment_response.commentID+"' AND object_id IN (SELECT comments_fbid FROM link_stat WHERE url='http://www.mysite.com/')",
access_token: login_response.accessToken
},
function( response ) {
//console.log( resp[0].text );
console.log(response);
});
}
else { // User cancelled login or did not fully authorize.
}
}, {scope:'publish_stream, read_stream'});
});
};
// Load the SDK's source Asynchronously
(function(d, debug){
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/de_DE/all" + (debug ? "/debug" : "") + ".js";
ref.parentNode.insertBefore(js, ref);
}(document, /*debug*/ false));
</script>
<fb:comments href="http://www.mysite.com/" width="580" num_posts="10"></fb:comments>