PHP cURL отправляет oauth2.0 access_token в заголовок и данные POST json

Я пытаюсь отправить свой access_token на oauth2.0 в POST заголовок, при этом одновременно размещая json в теле.

Итак, я уже приобрел свой access_token и теперь хочу использовать его для отправки некоторых данных в API.

$token = array(
"access_token" =>$test->access_token);

$data = array(
"Action" =>"updateUser",
"data" =>array('somedata' => 'somemoredata')
);

// Submit some data
$test2=curl_req2($pageURL.$webroot."/api/v1/User.php",$token, $data , "POST");
print_r($test2);

curl_req2() функция выглядит так:

function curl_req2($path,$token,$data,$req)
{
$ch = curl_init($path);
$data = json_encode($data);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $req);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $token['access_token']));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
//$result = json_decode($result);
curl_close($ch);

return $result;
}

Если я делаю это таким образом, он выглядит так, как будто код json не получен. Когда я print_r($_REQUEST) на стороне сервера он просто возвращает пустой массив. Если я не json_encode $dataмой массив возвращается нормально.

Затем я попытался добавить 'Content-Type: application/json','Content-Length: ' . strlen($data), к массиву HTTPHEADER в curl, но тогда авторизация в заголовке HTTP не работает.

Можно ли как-то авторизовать токен в заголовках POST, одновременно отправляя данные JSON в теле POST?

0

Решение

Сервера $_REQUEST суперглобальный работает с строки запроса, не с данными JSON.

Если вы хотите получить доступ к телу запроса, вы можете использовать:

$json = file_get_contents("php://input");
$data = json_decode($json);
var_dump($data);
2

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

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

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