файл получить содержимое — PHP file_get_contents дает HTTP-код 401 Несанкционированный

Я пытаюсь сделать запрос HTTP GET с проверкой подлинности, но получаю ошибку 401 HTTP. Я уверен, что подпись верна. Из-за этого, я думаю, проблема в нескольких заголовках в строке 18. Но, к сожалению, я не могу найти точную проблему.

Предупреждение: file_get_contents (http://test.com/path): не удалось открыть поток: ошибка HTTP-запроса! HTTP / 1.1 401 Не авторизован в /home/host/path.php в строке 22

<?php
$apiKey = '1';
$apiSecret = '2';

$verb = 'GET';

$path = '/path';
$nonce = '1';
$data = '';

$signature = hash_hmac('sha256', $verb . $path . $nonce . $data, $apiSecret);

$url="http://test.com/path";

$opts = [
"http" => [
"method" => $verb,
"header" => "api-nonce: ".$nonce. "\r\n", "api-key: " .$apiKey. "\r\n", "api-signature: " . $signature
]
];
$context = stream_context_create($opts);
$json = file_get_contents($url, false, $context);

if($json){
$data = @json_decode($json, TRUE);

print_r($data);
}
?>

0

Решение

У вас был неправильный формат в строке 18.
Вы использовали запятые для разделения заголовков, вместо этого вы должны просто объединить их в одну строку:

"header" => "api-nonce: ".$nonce. "\r\n" . "api-key: " .$apiKey. "\r\n" . "api-signature: " . $signature . "\r\n"
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]