0

我的应用程序需要向用户显示所有可用的页面类别,以便他可以选择要关注和/或喜欢的页面。有没有办法在c#中使用api来获取所有类别?

我还需要将 Facebook 中的所有可用区域用作位置和/或家乡等。

4

2 回答 2

1

经过一番研究,这似乎是不可能的。Facebook FQL 需要 where 子句来搜索页面。这意味着您需要提供以下内容之一:关键字、page_id、名称或用户名。由于您似乎没有任何这些字段,或者更具体地说,您想要所有内容,因此这些字段对您来说并不重要。总结一下:select categories from pages不是有效的 FQL,它有一个 where 子句。例子:

select categories from pages where page_id = x
select categories from pages where keyword = x
select categories from pages where name = x
select categories from pages where username = x

这对我来说似乎很奇怪,因为如果导航到https://www.facebook.com/pages该网站肯定能够枚举可用页面。如果您只是枚举站点上的所有页面,则可以基于大量递归搜索构建自己的类别列表。这需要不经常进行并在本地存储到您的应用程序中。

要回答您问题的第二部分,FQL 允许搜索已标记有位置数据的帖子(https://developers.facebook.com/docs/reference/fql/location_post)但是这只会返回基于以下内容的结果4条规则:

  • 你在帖子中被标记
  • 一位朋友在帖子中被标记
  • 您撰写了帖子
  • 一位朋友撰写了这篇文章

他们在这里所指的“您”是用于执行查询的 OAuth 令牌的所有者。同样,我不相信这会导致您能够检索位置列表,因为与where上面看到的相同的子句限制。

官方 Facebook API 部分到此结束。您当然可以依靠基本的网页抓取,类似于 Silamril 提供的答案。但是我不确定这是否适用于位置,因为该搜索框似乎是一个实时搜索自动完成框。这意味着您必须放入一些东西才能取出一些东西。我建议您查看 geoapi 提供程序,或者甚至简单地抓取一个 wikipage,例如http://en.wikipedia.org/wiki/List_of_lists_of_settlement_in_the_United_States。有一些地图信息提供商,例如 OpenStreetMap,它们能够以 API 格式为您提供相同的信息。请参阅 OSM wiki ( http://wiki.openstreetmap.org/wiki/Key:place )。

于 2013-03-09T17:27:34.740 回答
0

您可以使用https://gist.github.com/bloudermilk/2173940上的脚本获取所有页面类别

于 2013-03-09T17:19:27.867 回答