从 Instagram 地点获取 Facebook 地点 ID

Kam*_*med 3 facebook facebook-graph-api instagram instagram-api

我从 instagram API 的文档中知道instagram 已映射 facebook 位置,因此您可以通过 facebook place id ie 从 instagram 搜索并获取位置详细信息

https://api.instagram.com/v1/locations/search?facebook_places_id=273471170716&access_token=[ACCESS-TOKEN]
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我正在通过 Facebook 地点 ID 检索位置详细信息。

但在我的场景中,我想要的是使用 instagram id 从 instagram 位置详细信息获取facebook 地点 id 。下面是我的意思:

我已经获得了 Instagram 位置 ID,并且可以使用以下命令获取该地点的详细信息:

https://api.instagram.com/v1/locations/2862169?access_token=[ACCESS-TOKEN]
Run Code Online (Sandbox Code Playgroud)

但上述调用仅返回位置名称和地理坐标。而我也想要该位置的 Facebook 地点 ID。有什么办法让我也从 Instagram 获取 facebook 地点 id 吗?

已经检查了他们关于位置端点的文档(https://instagram.com/developer/endpoints/locations/),但无法找到任何相关信息。

我想要这样做的原因是,我需要获取位置详细信息,例如类别等,以及 instagram API 不提供的位置详细信息,因此我计划在 facebook graph API 上使用此检索到的 facebook 位置 id 来检索此附加位置详细信息。

Tob*_*obi 5

我认为您只能使用 Facebook Graph API 搜索此内容。因此,您可以使用 Instagram API 的输出latitudelongitudename构建一个 Graph API 调用,该调用会返回匹配的 Facebook 地点页面列表

id例如,如果 Instagram 位置788029,API 将返回以下 JSON:

{
    "id": "788029",
    "latitude": 48.858844300000001,
    "longitude": 2.2943506,
    "name": "Eiffel Tower, Paris"
}
Run Code Online (Sandbox Code Playgroud)

因此,如果您获取此结果并使用该数据构建 Facebook Graph API 搜索 url,则会产生如下结果:

https://graph.facebook.com/search?q=Eiffel%20Tower,%20Paris&type=place¢er=48.858844300000001,2.2943506&distance=100&limit=3&access_token= {app_access_token}

您可以选择您想要的distance以及limit您想要的。如果您进行设置,limit=1您将仅收到 Facebook 认为最匹配的地点。替换{app_access_token}为实际的应用程序访问令牌。

Facebook 的回应会是这样的

{
  "data": [
    {
      "category": "Local business", 
      "category_list": [
        {
          "id": "276651312419490", 
          "name": "Monument"
        }
      ], 
      "location": {
        "street": "", 
        "city": "Paris", 
        "state": "", 
        "country": "France", 
        "zip": "75007", 
        "latitude": 48.858385562198, 
        "longitude": 2.2944861654879, 
        "located_in": "141184112585566"
      }, 
      "name": "Level 2 Eiffel Tower, Paris", 
      "id": "380503552017025"
    }, 
    {
      "category": "Local business", 
      "category_list": [
        {
          "id": "186825111351005", 
          "name": "Tourist Attraction"
        }
      ], 
      "location": {
        "street": "", 
        "city": "Paris", 
        "state": "", 
        "country": "France", 
        "zip": "", 
        "latitude": 48.858205346341, 
        "longitude": 2.2944900587791
      }, 
      "name": "Eiffel Tower Sommett, Paris, France", 
      "id": "1458706024363987"
    }, 
    {
      "category": "Restaurant/cafe", 
      "category_list": [
        {
          "id": "168976549819329", 
          "name": "French Restaurant"
        }
      ], 
      "location": {
        "street": "", 
        "city": "Paris", 
        "state": "", 
        "country": "France", 
        "zip": "75007", 
        "latitude": 48.858532957713, 
        "longitude": 2.2941094631632, 
        "located_in": "141184112585566"
      }, 
      "name": "58 Tour Eiffel (officiel)", 
      "id": "148894855169991"
    }
  ], 
  "paging": {
    "next": "https://graph.facebook.com/v2.2/search?limit=3&type=place&q=Eiffel Tower, Paris&center=48.858844300000001,2.2943506&distance=100&offset=3&__after_id=enc_AdCYS3bVKOc29JFMrqlsouSZCvBxUTYZC7nHvqDHKAiBNrOs2ehUIaOsJ2wL9TxF9KOfgGmqEPOaLwotDM4pIUqyFf"
  }
}
Run Code Online (Sandbox Code Playgroud)