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". К сожалению, я не уверен, что можно заранее ограничить результаты для городов, но кажется, что города последовательно сортируются по этому типу запроса, поэтому метод "запрос затем фильтр" должен работать.
Идентификатор графика для Сундсвалля, результат сверху:
Согласно документации 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/