使用comment.create listener for fb:comments - 回调中的fql.query注释

时间:2012-12-30 09:13:14

标签: javascript facebook javascript-events facebook-javascript-sdk

我插入了以下有效的插件:

<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>

0 个答案:

没有答案