Столкнулся с подобной проблемой, впервую очередь отключите CURLOPT_FOLLOWLOCATION, instagram делает редиректы через Location, curl их исполняет но куки не выставляет. Я сделал так:
CURLOPT_FOLLOWLOCATION, 0
.....
ist($headers, $response) = explode("\r\n\r\n", $this->last_response, 2);
if(strlen($response) < 5){
$response = NULL;
}
$header_info['location'] = NULL;
$headers = explode("\n", $headers);
foreach($headers as $header) {
if (stripos($header, 'Location:') !== false)
$header_info['location'] = trim(preg_replace('/Location: /', '', $header) );
}
return array('response' => $response, 'header' => $header_info);
Это кусок кода из библиотеки Curl для Codeigniter 3
В итоге у меня имеется Location, по нему я делаю новый curl и если опять есть location то повторяю действия (обычный цикл до тех пор пока нет location).
Таким образом я эмитирую получение пользовательского токена для API инстаграм, на все уходит 3 цикла.