PHP cURL在头文件和POST json数据中发送oauth2.0 access_token

时间:2014-11-12 16:52:26

标签: php json post curl oauth-2.0

我试图在POST标题中将我的access_token发送到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数据?

1 个答案:

答案 0 :(得分:2)

服务器的$_REQUEST超全局适用于query strings,而不适用于JSON数据。

如果您想访问请求正文,可以使用:

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