我正在尝试从 Facebook 获取一个国家/地区所有城市的列表。
我从 v2.9 的 FB 文档开始:Facebook 营销 API https://developers.facebook.com/docs/marketing-api/targeting-search/v2.9
并尝试使用curl 获取城市列表:
curl -G \
-d 'location_types=["city"]' \
-d 'type=adgeolocation' \
-d 'q=dub' \
-d 'access_token=<MY_TOKEN>' \
https://graph.facebook.com/v2.9/search
但它返回空的 json。如果我删除 q=dub 参数,它仍然返回空数据。但如果我将国家/地区作为一种位置类型,那么它会很好地返回国家/地区列表。我究竟做错了什么?
如果您能指出如何使其返回特定国家/地区的城市,我们将不胜感激。有country_code参数,但也不起作用。
有点奇怪,但我在过去的几个小时里一直在尝试这个,结果发现当您使用沙箱帐户的访问令牌时,搜索城市不可用。
我使用真实的 Facebook 广告帐户的访问令牌尝试了相同的 api 端点,并且它有效。
至于它是如何工作的,这里有一些代码可能会对未来的读者有所帮助:
//Include Facebook SDK classes
//use FacebookAds\Api;
//use FacebookAds\ApiRequest;
//use FacebookAds\Object\TargetingSearch;
//use FacebookAds\Object\Search\TargetingSearchTypes;
function searcher() {
$fbutils = new FacebookUtils(16);
$account_id = $fbutils->getAccountID();
$accessToken = $fbutils->getAccessToken($account_id);
Api::init(fb_app_id, fb_app_secret, $accessToken);
$result = TargetingSearch::search(
TargetingSearchTypes::GEOLOCATION, null, 'dub', array(
'location_types' => array('city'),
));
$fb = new Facebook([
'app_id' => fb_app_id,
'app_secret' => fb_app_secret,
'default_graph_version' => 'v2.10',
'default_access_token' => $accessToken
]);
$fb = $result;
$objects = $result->getArrayCopy();
$objects_arr = array();
do {
foreach ($objects as $object) {
$objects_arr[] = $object->getData();
}
} while ($objects = $fb->next($objects));
echo "<pre>";
print_r($objects_arr);
exit;
}
注意:用您的数据替换常量和变量,这应该适用于搜索城市并使用分页并将结果打印为漂亮的数组。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)