2017-07-07 75 views
1

我想从Facebook获取一个国家所有城市的列表。Facebook营销API。地理搜索

我从V2.9的FB文件在这里开始: Facebook Marketing API

而作为使用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 =配音参数,它仍会返回空数据。但是,如果我把国家作为一种位置,那么它很好地返回国家名单。我究竟做错了什么?

如果你能指出如何让它返回某个国家的城市,那么它也会受到欢迎。有country_code参数,但它也不起作用。

+0

同样在这里,我可以得到一个国家的列表,但空的响应城市 –

+0

没问题,有点更新,我看到,即使是业务经理用户界面无法找到或匹配我的沙箱帐户的城市,但它确实有效对于真正的Facebook帐户,不知道为什么,但通过api即使使用真实账户也没有反应 –

+0

好了,为真实账户工作 –

回答

0

有点不可思议,但我在最近几个小时尝试了这一点,结果表明,当您使用的是Sandbox帐户的访问令牌时,不会搜索城市。

我试着用真正的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; 
} 

注:与您的数据替换常量和变量,这应该用于搜索城市工作,并使用分页和打印结果很漂亮。