2017-07-07 111 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; 
} 

注:與您的數據替換常量和變量,這應該用於搜索城市工作,並使用分頁和打印結果很漂亮。