我有一个Facebook应用程序,它有自己的消息系统,但我仍然希望显示用户在Facebook上发表的用户分享或喜欢的评论。
假设在Facebook中共享了一个网址(例如http://myapp.com/?myId=100005235),人们会在共享中添加评论。这些评论(和用户名)是我想要检索的。
我可以使用facebook-js-sdk吗?
答案 0 :(得分:2)
是的,你可以。最简单的方法是对Facebook进行FQL调用。您 也可以使用Graph API调用来执行此操作,但在我的测试中,我无法找到返回所需数据的方法。
在FQL中,您需要查询三个不同的表:link_stat
以获取您的网址的Facebook ID,comments
获取评论信息,user
获取名称已发表评论的注册用户。
随后展开了多个查询,以便于阅读。
{
"my_link":
"SELECT comments_fbid, comment_count, normalized_url FROM link_stat WHERE
url ='http://funcook.com/receta.php?id=53' ",
"comment":
"SELECT object_id, fromid, time, text, username FROM comment WHERE
object_id IN (SELECT comments_fbid FROM #my_link)",
"com_users":
"SELECT name, uid FROM user WHERE uid IN (SELECT fromid FROM #comment)"
}
你会得到一个JSON对象。我的网站上有一些测试网址,我发现my_link.comment_count
并不总是等于count(comment)
。我发现其中一个显示为零而另一个没有显示的情况。
这是一个脚本:
<script>
FB.api(
'/fql', {q:{"my_link":"SELECT comments_fbid, comment_count, normalized_url FROM link_stat WHERE url='http://funcook.com/receta.php?id=53'",
"comment":"SELECT object_id, fromid, time, text, username FROM comment WHERE object_id IN (SELECT comments_fbid FROM #my_link)",
"com_users": "SELECT name, uid FROM user WHERE uid IN (SELECT fromid FROM #comment)" }},
function(response){
console.log(response)
});
</script>
答案 1 :(得分:0)
以下是comments和posts的图表API参考。后者说每个帖子都有comments
个对象。
我之前从未使用过Graph API,而且我不擅长编写代码,所以我无法为您提供实际代码,但可能还有以下几点:
FB.api(
'/19292868552_10150189643478553', // fetch a post by its id
function(response) { // callback function
for (var comment in response["comments"]["data"]) {
// process comment
}
}
);
虽然在服务器端获取注释可能更有意义 - 取决于在用例中更有意义的内容。