如何使用Facebook社交图谱API搜索查找评论数量和评论列表?

时间:2011-12-15 06:51:03

标签: facebook facebook-graph-api

通过使用Graph Facebook API,我试图找到与特定关键字相关的所有公共内容。

https://graph.facebook.com/search?q=obama&type=post  

我得到了我预期的结果,但最近我还想找到与特定结果相关的评论数量和个别评论列表。

这是上述API调用的输出示例:

{
     "id": "1372608125_2297171713409",
     "from": {
        "name": "xxxx",
        "id": "1372608125"
     },
     "message": "Originaly posted by:Anthony McMahan\n\n Political breakdown time....\n \nToday is short one, here is some information that will floor you if you werent aware of it yet. The United States of America makes approximately 15 trillion dollars annually GDP. Our debt has recently tipped over 15 trillion in recent days. So we now owe more than we make in a year. \n\nTo further add to the fury, medical facilities in the USA account for 1/6 of our GDP, so about 2.5 trillion dollars are brought in from hospitals across the US. the new healthcare bill is a stretch for the givernment to take control of all medical facilities in the US, which would basically cancel out 1/6 of our income as the healthcare would be made available to everyone. Therefore in light of the US being in more debt than we could make in a year, the plan is to take away 1/6 of our ability to make money. Imagine being in credit card debt and having to take a pay cut at work, because you chose to work in the mailroom instead of a cubicle. thats what is going on here in allegory. i would just like to take this time to say, \"thank you mr obama for making this country a laughing stock in the eyes of all our enemies and foreign nations, you'd make Karl Marx and Vladimir Lenin all too proud.\" \n\nUntil tomorrow........",
     "type": "status",
     "created_time": "2011-12-15T06:02:51+0000",
     "updated_time": "2011-12-15T06:02:51+0000"
  }  

假设我想查找与该帖子相关的评论数量和评论列表。我应该使用其他API调用吗? 是否可以直接在“Graph API搜索”中了解评论数量而无需调用其他API?我需要这个,以便如果帖子有评论我将运行另一个API来获取评论列表,否则我不需要运行额外的API调用。

我知道要获取单个注释的列表,我需要运行以下API调用:

http://graph.facebook.com/1372608125_2297171713409/comments  

这是正确的方法吗?在这里,我也没有得到任何线索,无论该帖子是否真的有评论。

我实际上希望获得与Google+ API类似的功能,在一个搜索API调用中,我可以获得如下的回复(评论)数量:

"replies": {
 "totalItems": 53,
 "selfLink": "https://www.googleapis.com/plus/v1/activities/z13rhfhjzzm4ztrnt22kwpgglsrjdfra504/comments"
},

3 个答案:

答案 0 :(得分:1)

更简单的方法是使用所谓的“批处理请求”。它允许您一次执行多个Graph API请求,甚至可以让您定义请求之间的依赖关系。可以找到完整的文档here(您需要向下滚动一下“指定请求中的操作之间的依赖关系”)。

您的第一个请求是搜索结果,第二个请求将取决于第一个调用的结果,使用每个结果的图表ID来获取每个搜索结果的注释。

我还没有使用依赖的批处理请求,但你应该试一试: - )

答案 1 :(得分:0)

您最好的选择是让您的代码在评论数量上运行,以获得线程中的评论数量(如果有)。不幸的是,为了做到这一点,你将不得不进行/ id / comments调用。我不知道有任何方法可以通过额外的API调用完成此任务。

答案 2 :(得分:0)

是的,您需要为每个帖子使用第二个API调用。

  

是否可以直接在“图谱API搜索”中了解评论数量而无需调用其他API?我需要这个,以便如果帖子有评论我将运行另一个API来获取评论列表,否则我不需要运行额外的API调用。

通常在阅读墙或Feed时,您可以请求每个帖子的comments字段,该字段会告诉您有多少条评论(尝试/me/feed?fields=comments)。出于某种原因,这似乎在搜索API中不可用,并且请求注释字段从API返回错误。

在帖子上请求评论的正确方法确实是:

http://graph.facebook.com/1372608125_2297171713409/comments

如果您返回一个空列表,则没有评论。否则,您将获得评论列表。如何检查这将取决于您使用的语言。对于没有注释的帖子,返回的原始JSON数据将如下所示:

{
  "data": []
}

非常活跃的网页上的帖子可能包含数千条评论,因此如果您计划点​​击其中许多评论,您可能需要指定limit参数一次获取一堆评论:

http://graph.facebook.com/1372608125_2297171713409/comments?limit=1000

如果评论不到一千条,你就可以立即将它们全部收回。