Авторизация на предъявителя запрещена в API с использованием cURL - PullRequest
0 голосов
/ 19 января 2019

Я хочу сделать простой пост-запрос к серверу API. Я знаю, что есть много информации о cURL в сети, но я не могу понять, почему я получаю:

[message] => Authorization has been denied for this request.

Таким образом, API использует стандартный токен на предъявителя (в заголовке Authorization: Bearer {tokenID})

мой php код:

$body = array(
        "id" => $uuid,
        "userAccountId" => $userAccountId,
        "email" => $email,
        "first_name" => $first_name,
        "last_name" => $last_name,
        "phone" => $phone,
      );

      $ch = curl_init();
      curl_setopt($ch, CURLOPT_HTTPHEADER, http_build_query(array(
        'Authorization' => $token,
      )));
      curl_setopt($ch, CURLOPT_URL, $myurl);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($body));
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
      $result = curl_exec($ch);
      curl_close($ch);
      $result = json_decode($result);

Самое интересное и странное, что когда я отправляю запрос Post на тот же URL с тем же телом и тем же заголовком (с тем же токеном), используя почтальон, он работает, однако он не работает с php cURL , Также я попытался с https://www.codepunker.com/tools/http-requests и получил ту же ошибку авторизации. У кого-нибудь есть идеи, что бы это могло быть?

1 Ответ

0 голосов
/ 19 января 2019

Я обнаружил проблему: я должен был использовать json_encode($body) вместо http_build_query($body) и заголовок следующим образом:

      curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Authorization: Bearer .....',
        'accept: application/json',
        'content-type: application/json',
      ));
...