Hubspot API:获取所有联系人(超过100个)

时间:2018-11-13 10:45:07

标签: api loops while-loop hubspot

我正在尝试用我的所有联系人创建一个大json文件。由于API最多返回100个联系人,因此我必须进行分页。

我在此上找到了older topic,但这使用了外部repo。我找到了newer repo,但无法使它正常工作。最好的情况是,我不需要使用外部库,因为我需要这么小的代码。

我尝试了以下代码,但仍在继续加载。我的猜测是变量不会更新。我在做什么错了?

<?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 :(得分:0)

我能想到的一件事是,您的循环没有考虑到HubSpot每秒仅允许10个请求的事实(请参阅here)-您的循环可能会超出该限制,从而导致问题。您应该在while循环结束之前添加以下代码(这会使脚本休眠0.1秒):

usleep(100000);

此外,使用this one之类的PHP API库可能是一个更好,更干净的主意。