Hubspot API: получение всех контактов (более 100) - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь создать один большой файл JSON со всеми моими контактами. Поскольку API возвращает максимум 100 контактов, я должен работать с нумерацией страниц.

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

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

<?php


echo '<pre>';
function getData($offset = 0){

$properties = "&property=email&property=firstname&property=funnel&property=hs_lead_status&property=start_session";
$apikey = "xxxx-xx-xx";
$feed_url = "https://api.hubapi.com/contacts/v1/lists/all/contacts/recent?hapikey=". $apikey.  $properties.'&vidOffset='.$offset;

$curl = curl_init();
curl_setopt_array($curl, array(
  CURLOPT_URL => $feed_url,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "cache-control: no-cache"
  ),
));
$response = curl_exec($curl);
$data = json_decode($response);

return $data; //return the results for use
}

$allData = array();




$offset = 0;
$hasMore = true;

while ($hasMore === true) {

    $response = getData( $offset );
    $allData[] = $response;


    $offset = $response->{'vid-offset'};
    $hasMore = $response->{'has-more'};

    var_dump( $hasMore );
    $hasMore = false;
}

1 Ответ

0 голосов
/ 07 декабря 2018

Одна вещь, о которой я могу подумать, это то, что ваш цикл не принимает во внимание тот факт, что HubSpot разрешает только 10 запросов в секунду (см. здесь ) - ваш цикл может превышать это значение, и поэтомувызывая проблемы.Вы должны добавить следующий код непосредственно перед завершением цикла while (это приведет к отключению скрипта на 0,1 секунды):

usleep(100000);

Кроме того, было бы лучше и понятнее использовать PHP APIбиблиотека, такая как this .

...