我的应用程序需要向用户显示所有可用的页面类别,以便他可以选择要关注和/或喜欢的页面。有没有办法在c#中使用api来获取所有类别?
我还需要将Facebook中的所有区域用作位置和/或家乡等。
答案 0 :(得分: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提供商,或者甚至简单地刮一下像http://en.wikipedia.org/wiki/List_of_lists_of_settlements_in_the_United_States这样的wikipage。有像OpenStreetMap那样的映射信息提供者,它们能够以API格式为您提供相同的信息。请参阅OSM wiki(http://wiki.openstreetmap.org/wiki/Key:place)。
答案 1 :(得分:0)