В моем приложении я использую API Commercetools.
Чтобы получить данные из их API, мне нужно вызвать конечную точку.
Ниже приводится конечная точка, которую я использовал для получения продуктов.
https://api.sphere.io/vc-1209/products -H "Authorization: Bearer -5DVqQFgkd_SDGthsFgtepS"
Когда я запускаю выше URL в терминале, как
curl https://api.sphere.io/vc-1209/products -H "Authorization: Bearer -5DVqQFgkd_SDGthsFgtepS"
Это дает мне ответ со всеми продуктами.
Но когда я выполняю тот же URL из PHP cURL, он не работает.
$url = 'https://api.sphere.io/vc-1209/products -H "Authorization: Bearer -5DVqQFgkd_SDGthsFgtepS"';
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($curl);
print_r($response);
Я возвращаюсь:
Клиент отправил неверный запрос.
Вы всего, что вам нужно установить CURLOPT_HTTPHEADER
здесь в вашем примере, чем вы можете получить ответ.
<?php
$url = 'https://api.sphere.io/vc-1209/products';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer -5DVqQFgkd_SDGthsFgtepS'
));
$response = curl_exec($ch);
var_dump($response);
?>
Когда вы запустите свой код на локальном хосте, он даст вам bool(false)
возможно только из-за https
запрос.
Когда я нажимаю на ваш запрос на производство, где включен https, он дает мне такой ответ:
Строка (130)
«{» StatusCode «: 401,» сообщение «:» invalid_token » «ошибка»: [{ «код»: «invalid_token», «сообщение»: «invalid_token»}], «Ошибка»: «invalid_token»}»
Эта ошибка четко показывает, нужно добавить access token
в вашем запросе CURL в качестве заголовка.
Также обратите внимание, что код состояния curl равен 401, что означает, что вы не авторизованы для выполнения этого запроса, вам необходимо добавить токен доступа.
Проблема очевидна, вы добавляете -H "Authorization: Bearer -5DVqQFgkd_SDGthsFgtepS"
на URL, который заставит PHP запросить URL:
https://api.sphere.io/vc-1209/products%20-H%22Authorization%3A%20Bearer%20-5DVqQFgkd_SDGthsFgtepS%22
Если вы хотите установить пользовательские заголовки в PHP cURL, установите CURLOPT_HTTPHEADERS
опция:
$curl = curl_init('https://api.sphere.io/vc-1209/products');
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_HTTPHEADER, array( // Set Headers
'Authorization: Bearer -5DVqQFgkd_SDGthsFgtepS'
));
$response = curl_exec($curl);
print_r($response);
curl_close($curl); // Close cURL
Вам нужно правильно установить заголовки:
$url = 'https://api.sphere.io/vc-1209/products';
$bearerToken = "someToken";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: Bearer '.$bearerToken));
$response = curl_exec($curl);