我试图将我的access_token发送到POST
标头中的oauth2.0,同时在正文中张贴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)
添加到curl中的HTTPHEADER数组中,但HTTP头中的授权不起作用。
有没有一种方法既可以在POST标头中授权令牌,又可以在POST正文中发送json数据?
服务器的$_REQUEST
超全局处理查询字符串,而不是JSON数据。
如果你想访问请求主体,你可以使用:
$json = file_get_contents("php://input");
$data = json_decode($json);
var_dump($data);