FB Development - Как искать в Facebook города по их "ключу"

Ситуация:

В настоящее время я работаю над проектом, где пользователь может искать город. Чтобы получить результат, я использую этот URL через ajax:

https://graph.facebook.com/search?q=**sundsvall**&type=adcity&country_list=**se**&access_token=

Когда я отправляю запрос в Facebook, я получаю такой ответ:

{
   "data": [
      {
         "name": "Sundsvall, Sweden",
         "key": 220260543,
         "subtext": "Vasternorrlands Lan, Sweden"
      },
      {
         "name": "Sundsvallen, Sweden",
         "key": 220260542,
         "subtext": "Jamtlands Lan, Sweden"
      }
   ]
}

Из этого ответа я получаю ключ и сохраняю его в своей таблице базы данных.

Моя проблема

Я также хочу к обратному, и получить "имя" и "подтекст", предоставив "ключ". Вы знаете, "дайте мне информацию, где ключ = 220260543".

Я знаю, что могу хранить имя и подтекст в моей базе данных, но я предпочитаю просто сохранить ключ.

Кто-нибудь знает, возможно ли это? Как? Ссылки? Я прочитал документацию по разработке на Facebook, но пока ничего не нашел.

2 ответа

Если вам не нужен "подтекст"/ регион, и вы отправляете полные названия городов (не используются в некоторых контекстах автозаполнения):

Альтернативой является поиск places (которые включают города), а не adcities, Это даст идентификатор графика для местоположения, которое затем можно просто подключить к graph.facebook.com.

Пример запроса:

https://graph.facebook.com/search?q=sundsvall%20sweden&type=place&access_token=[TOKEN]

Это даст:

{
   "data": [
      {
         "name": "Sundsvall, Sweden",
         "category": "City",
         "location": {
            "latitude": 62.3833,
            "longitude": 17.3
         },
         "id": "110103992352737"
      },
      {
         "name": "Ladyland of Sweden",
         "category": "Local business",
         "location": {
            "street": "Thulegatan 12",
            "city": "Sundsvall",
            "country": "Sweden",
            "zip": "85232",
            "latitude": 62.389481631972,
            "longitude": 17.303409784226
         },
         "id": "170645612982568"
      },
      ...

И как бы здорово ни звучала Ladyland, вы можете отбросить это и все остальное в ответе, не совпадающем с "category": "city". К сожалению, я не уверен, что можно заранее ограничить результаты для городов, но кажется, что города последовательно сортируются по этому типу запроса, поэтому метод "запрос затем фильтр" должен работать.

Идентификатор графика для Сундсвалля, результат сверху:

https://graph.facebook.com/110103992352737

Согласно документации Facebook, ваш запрос используется только для автозаполнения в API рекламы. Ключ относится только к конкретной стране. В их документации нет ничего, что указывало бы нам разработчикам, как вернуться назад от ключа к городу. Кажется, что нет таблицы FQL для городов, в которых есть ключевой столбец. А график все еще голый и имеет еще меньше.

Вы можете сделать это, запросив данные геометы следующим образом:

use FacebookAds\Object\TargetingSearch;
use FacebookAds\Object\Search\TargetingSearchTypes;

$result = TargetingSearch::search(
  TargetingSearchTypes::GEOLOCATIONMETA,
  null,
  null,
  array(
    'cities' => array(<city_key>),
  ));

Если возвращаемый массив с ключом "cities" не пуст, значит у вас есть город, соответствующий этому ключу:)

Документ для данных geometa: https://developers.facebook.com/docs/marketing-api/audiences/reference/targeting-search/

Другие вопросы по тегам