Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何列出我的域中的所有注释_Javascript_Facebook Graph Api_Facebook Fql_Facebook Comments - Fatal编程技术网

Javascript 如何列出我的域中的所有注释

Javascript 如何列出我的域中的所有注释,javascript,facebook-graph-api,facebook-fql,facebook-comments,Javascript,Facebook Graph Api,Facebook Fql,Facebook Comments,我正在我的网站上使用HTML5版本的Facebook评论。我有自己的Facebook应用程序Id 使用Graph API和FQL,我想这就是如何做到的,我想列出我网站上发布的所有评论 范例- Page Title1 --Comment1 --Comment2 --Comment3 Page Title2 --Comment1 --Comment2 --Comment3 Page Title3 --Comment1 --Comment2 --Comment3 etc. 请帮帮我。参考: 说

我正在我的网站上使用HTML5版本的Facebook评论。我有自己的Facebook应用程序Id

使用Graph API和FQL,我想这就是如何做到的,我想列出我网站上发布的所有评论

范例-

Page Title1
--Comment1
--Comment2
--Comment3

Page Title2
--Comment1
--Comment2
--Comment3

Page Title3
--Comment1
--Comment2
--Comment3

etc.
请帮帮我。

参考:

说你的网站是http://mywebsite.com/blog.php?id=3 你有一个facebook评论插件, 您可以通过这种方式访问评论

 https://graph.facebook.com/comments/?ids={YOUR_URL}.
{YOUR_URL}变为http://mywebsite.com/blog.php?id=3

示例1:开发者facebook文档网站上安装的评论插件

网站:

获取评论:

例2:

网站:

获取评论:

也检查一下这个


可以在此

上找到获取注释的示例代码。只要您有一组固定的子页面,您就可以通过两种不同的方式获取注释

如果您有大量的子页面,或者子页面数量可变,那么您就没有一个好的可扩展解决方案—许多人一直在寻找一个:

对于网站中的固定子页面集,您可以使用批处理请求或FQL查询

批量请求

首先,您需要您的访问令牌。只需在网站的浏览器中输入以下url:

这是javascript jquery代码,用于发出批处理请求以同时从多个URL获取注释:

$.ajax({ url: 'https://graph.facebook.com/', type : "POST", data: { access_token : 'YOUR_APP_ACCESS_TOKEN', batch : '[ \ {"method":"GET","relative_url":"URL1"}, \ {"method":"GET","relative_url":"URL2"} \ ]' }, success: function(data) { jdata = JSON.parse(data); $.each(jdata, function(index,value){ jdata[index].body = JSON.parse(value.body); console.log(value.body); }); // Do whatever you want with jdata } }); FQL

灵感来源于《邮报》

结论


由于Facebook的这一局限性,我计划切换到disqs.com,它显然支持这一功能,例如,你可以从这里看到。搜索“最近的评论”

而不是列出网站上的所有评论,Facebook希望您实现代码,以便在网站上任何地方发布新评论时获得通知

要做到这一点,您必须在发布评论的页面中添加一些Javascript,以通知您自己:

window.fbAsyncInit = function(){
    console.log("subscribing to comment create");
    FB.Event.subscribe('comment.create',function(response){
        console.log("facbeook comment created: " + JSON.stringify(response));
        var commentQuery = FB.Data.query('SELECT fromid, text FROM comment WHERE post_fbid=\'' + response.commentID + '\' AND object_id IN (SELECT comments_fbid FROM link_stat WHERE url=\'' + response.href + '\')');
        FB.Data.waitOn([commentQuery], function () {
            console.log("Facebook comment: " + JSON.stringify(commentQuery));
        }); 
    });
};

如果不只是将评论记录到控制台,您需要实现一些AJAX,将评论发送回您的站点,您可以将评论存储在数据库中,或者向自己发送一封电子邮件,通知您评论已经发布。

实际上,我尝试了这个,我得到了这个输出-但我在我的网站上有评论!!{:{comments:{data:[]}}}是正好位于mysite.com上的comments插件,您应该给出完整的url。我相应地更新了我的答案,请检查并确保转义url中的任何特殊字符。例如,如果您的url为:查询此页面评论的方法是,如果您欣赏以下任何答案,请将其中一个标记为正确答案。这将提高你的声誉,以及作曲者的声誉。
window.fbAsyncInit = function(){
    console.log("subscribing to comment create");
    FB.Event.subscribe('comment.create',function(response){
        console.log("facbeook comment created: " + JSON.stringify(response));
        var commentQuery = FB.Data.query('SELECT fromid, text FROM comment WHERE post_fbid=\'' + response.commentID + '\' AND object_id IN (SELECT comments_fbid FROM link_stat WHERE url=\'' + response.href + '\')');
        FB.Data.waitOn([commentQuery], function () {
            console.log("Facebook comment: " + JSON.stringify(commentQuery));
        }); 
    });
};