Используя cURL дважды на одной странице, сначала авторизуйтесь, затем получайте данные - PullRequest
1 голос
/ 08 марта 2019

У меня есть следующий код для запроса cURL для аутентификации в качестве первого шага:

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => "https://api.example.com/v1/api2/login?grant_type=client_id",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => "",
    CURLOPT_HTTPHEADER => array(
        "Authorization: Basic abcdefhjijkjljpeqrperpqweprwqprqrp",
    ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo "cURL Error #:" . $err;
} else {
   echo $response;
}
$response = json_decode($response);

Этот код работает нормально и возвращает объект токена Bearer.

ОБНОВЛЕНИЕ: Вот ответ на первый запрос cURL:

{"access_token":"afasfadsfaewrererearaere34343434-34-3403-403-403-3-3434343434343","type":"Bearer"}

Теперь, после получения токена Bearer, я хотел бы сделать GET-запрос, используя тот же API, и вот где у меня проблемы:

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => "http://api.example.com/v1/api2/event/adfafsafsfafsffs",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_POSTFIELDS => "",
    CURLOPT_HTTPHEADER => array(
        "Authorization: Bearer " . $response['access_token'],
    ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo "cURL Error #:" . $err;
} else {
    echo $response;
}

Этот код прерывается, когда я пытаюсь его запустить.

Вот документация для форматирования запроса:

curl -X GET \
  http://api.example.com/v1/api2/event/adfafsafsfafsffs \
  -H 'Authorization: Bearer bzJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9' 

Как мне отформатировать второй запрос cURL, чтобы он работал с инструкциями выше, и я мог сделать запрос GET после аутентификации?

Спасибо за помощь!

...