PHP cURL Заголовок неправильной авторизации REST API Basic Authorization - PullRequest
0 голосов
/ 15 июня 2019

Я пытаюсь сделать HTTP-запрос к API моего поставщика, используя curl Basic Auth, как это:

//Server url
$url = "https://api.example.com/store/products?status=all&offset=0&limit=50";
$apiKey = 'xxxxxxx'; // apikey
$headers = array(
     'Authorization: Basic '.$apiKey
);
// Send to Server
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, 30); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// Get response
$response = curl_exec($ch);
// Encode : decode returns string error so use encode
echo $result = json_encode($response);

С этим кодом я получаю ошибку:

"{\" code \ ": 400, \" result \ ": \" Malformed Authorization заголовок \ "\ "ошибка \.": {\ "причина \": \ "BadRequest \", \ "сообщение \": \" искаженной Заголовок авторизации. \ "}}"

Я искал везде решение здесь и здесь . Во всех ответах предлагается добавить имя пользователя и пароль, которые не нужны для API моего поставщика, только Api Key и заголовок Basic Auth. Что я делаю не так?

1 Ответ

1 голос
/ 15 июня 2019

в HTTP Basic Auth, учетные данные должны быть в кодировке base64, вы кодируете base64 ключ?

Кроме того, в основной аутентификации http, имя пользователя и пароль разделяются :Ваш ключ API должен идти как имя пользователя или как пароль?и что вы отправляете это как, вы отправляете это как имя пользователя или вы посылаете это как пароль?(если ваш ключ API перед :, то вы отправляете его как имя пользователя, если ваш ключ идет после :, то вы отправляете его в качестве пароля), попробуйте переключить их, работает ли тогда?

и вы говорите, что http basic auth, но если в документации API явно не указано, соответствует ли ключ api имени пользователя или паролю, я не уверен, что они действительно используют * 1008.* вообще ..

в любом случае, спецификации HTTP Basic Auth можно найти здесь: https://tools.ietf.org/html/rfc7617

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...