我有一个 Facebook 应用程序,它有自己的消息系统,但我仍然想显示用户在 Facebook 中通过用户分享或点赞所做的评论。
假设一个 URL(例如http://myapp.com/?myId=100005235)在 Facebook 中共享,人们在共享中添加评论。这样的评论(和用户名)是我想要检索的。
我可以用 facebook-js-sdk 来做吗?
我有一个 Facebook 应用程序,它有自己的消息系统,但我仍然想显示用户在 Facebook 中通过用户分享或点赞所做的评论。
假设一个 URL(例如http://myapp.com/?myId=100005235)在 Facebook 中共享,人们在共享中添加评论。这样的评论(和用户名)是我想要检索的。
我可以用 facebook-js-sdk 来做吗?
是的你可以。最简单的方法是对 Facebook 进行FQL调用。您还应该能够通过 Graph API 调用来执行此操作,但在我的测试中,我找不到返回所需数据的方法。
在 FQL 中,您需要查询三个不同的表:link_stat
获取 URL 的 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>
这是评论和帖子的 Graph 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
}
}
);
尽管在服务器端获取评论可能更有意义 - 取决于您的用例中更有意义的内容。