如何使用Graph-API在Facebook上搜索特定位置的所有用户

4

我有一个项目,需要在Facebook上搜索特定位置的所有人,然后对数据应用进一步过滤。我的问题是:

如何使用Graph API获取初始数据?

我知道可以使用Facebook内部的搜索字段来实现。只需键入"All people living in ???"即可返回人员列表。但我在Facebook的Graph-API中找不到这样的功能。以下是我的尝试:

我修改了一些标准搜索请求的参数:

  • search?type=user&center=52.946758,-1.172882&distance=1000
  • search?type=user&center=Nottingham&distance=1000

以下是我的尝试结果:

{
  "error": {
    "message": "No node specified", 
    "type": "GraphMethodException", 
    "code": 100
  }
}

使用类似的查询,只是将center替换为location

  • search?type=user&location=Nottingham&distance=1000
  • search?type=user&location=52.946758,-1.172882&distance=1000
  • search?type=user&q=&location=Nottingham

结果却出现了错误,提示我输入的位置不正确。

{
  "error": {
    "message": "(#160) Invalid coordinates.  Coordinates must contain at least latitude and longitude.", 
    "type": "OAuthException", 
    "code": 160
  }
}

接着,使用坐标作为 query 参数搜索用户结果为空。

  • search?type=user&q=52.946758,-1.172882&distance=1000

{"data": []}


随后,我尝试搜索正确的位置来传递给查询的 location 参数

  • search?type=location&q=52.946758,-1.172882

但是只得到了一个弃用错误提示。

{
  "error": {
    "message": "(#12) location search is deprecated for versions v2.0 and higher", 
    "type": "OAuthException", 
    "code": 12
  }
}

我不知道如何获取这个信息。如果有人能告诉我如何获得这些信息,会对我很有帮助,因为我不知道下一步该尝试什么。

我找到了一个类似于我的问题的问题,但是被接受的答案并没有真正回答这个问题 Facebook 搜索 API - 基于位置列出所有用户?

2个回答

4
你可以搜索地点或用户,但绝对不能搜索“某个区域内的所有用户”。Facebook上的图形搜索可以处理更多API无法获取的内容。考虑隐私,我不希望任何应用程序知道我是否在附近,甚至没有授权该应用程序;)。
Facebook文档:https://developers.facebook.com/docs/graph-api/using-graph-api/v2.2#search 要获取用户居住地,请查看用户参考资料:https://developers.facebook.com/docs/graph-api/reference/v2.2/user 其中有一个“位置”字段,您需要使用“user_location”权限授权用户才能获取该信息。无法从任何用户那里获取该信息。仅因为您可以在Facebook上看到数据并且该数据是公开的,并不意味着您可以通过应用程序访问它,出于隐私原因,只有授权用户才能这样做。

顺便提一下,没有使用应用程序的情况下禁止抓取数据,请查看抓取条款: https://www.facebook.com/apps/site_scraping_tos_terms.php


我并不是想通过用户的当前位置来查找每个用户。我所指的是一个人居住的地方信息。在大多数账户中,这被设置为公共信息,因此原则上应该对每个人都可用,包括我的应用程序,而不会侵犯个人隐私。 - whY
公共并不意味着您可以让每个未授权使用您的应用程序的用户都能访问它。这与API的工作方式不同。 - andyrandy
话虽如此,您也不能使用搜索API来获取用户所在的位置。我会在我的回答中添加一些信息。 - andyrandy
好的,我不知道Facebook用户和应用程序之间有如此严格的区别。但是感谢您澄清了这一点。看来,我必须想出一个完全不同的方法来获取数据。 - whY
1
获取数据的唯一途径是通过向用户授权用户位置权限。其他任何方式都是非法的,请查看抓取条款:https://www.facebook.com/apps/site_scraping_tos_terms.php - andyrandy
我会将其添加到答案中,因为了解它非常重要。 - andyrandy

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接