PHP检索POST结果

PHP检索POST结果,php,authentication,oauth,request,http-post,Php,Authentication,Oauth,Request,Http Post,我正在尝试创建一个“精确在线”的应用程序,但我在OAuth安全认证方面遇到了一点问题 在发出第一个身份验证请求并登录之后,我收到了一个代码。 通过这段代码,我可以获得一个用于进行api调用的令牌 if (!empty($_GET["code"])){ $code = $_GET["code"]; 到目前为止,获取代码是有效的。但是,当我尝试提出新的请求(针对令牌)时,我没有得到响应数据。 我的代码如下: $data = array( 'code' => $code, '

我正在尝试创建一个“精确在线”的应用程序,但我在OAuth安全认证方面遇到了一点问题

在发出第一个身份验证请求并登录之后,我收到了一个代码。 通过这段代码,我可以获得一个用于进行api调用的令牌

if (!empty($_GET["code"])){
$code = $_GET["code"];
到目前为止,获取代码是有效的。但是,当我尝试提出新的请求(针对令牌)时,我没有得到响应数据。 我的代码如下:

$data = array(
    'code' => $code,
    'redirect_uri' => 'http://****/asdf2.php',
    'grant_type' => 'authorization_code',
    'client_id' => '******-****-****-******-*****',
    'client_secret' => '*********'
);
// Create map with request parameters

// Build Http query using params
$query = http_build_query ($data);

// Create Http context details
$contextData = array ( 
                'method' => 'POST',
                'header' => "Connection: close\r\n".
                            "Content-Length: ".strlen($query)."\r\n",
                'content'=> $query );

// Create context resource for our request
$context = stream_context_create (array ( 'http' => $contextData ));

    // Read page rendered as result of your POST request
$result =  file_get_contents (
                  'https://start.exactonline.nl/api/oauth2/token',  // page url
                  false,
                  $context);

// Server response is now stored in $result variable so you can process it
if (!empty($result)){
echo "success"; 
}else{
echo "no result";
}
}else { 
echo "error";
}
$result始终为空,可能是什么问题。我已经检查了我的客户id和机密多次

将其更改为“卷曲”后,仍不起作用:

$result = get_oauth2_token($code); 

// Server response is now stored in $result variable so you can process it
if (!empty($result)){
echo "success";
}else{
echo "no result";
}
}else { 
echo "error";
}

/*
Function
*/

function get_oauth2_token($code) {

global $client_id;
global $client_secret;
global $redirect_uri;

$oauth2token_url = "https://start.exactonline.nl/api/oauth2/token";
$clienttoken_post = array(
    'code' => $code,
    'redirect_uri' => 'http://*****/asdf2.php',
    'grant_type' => 'authorization_code',
    'client_id' => '{*******}',
    'client_secret' => '******'
);

$curl = curl_init($oauth2token_url);

curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $clienttoken_post);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$json_response = curl_exec($curl);
curl_close($curl);

$authObj = json_decode($json_response);

if (isset($authObj->refresh_token)){
    //refresh token only granted on first authorization for offline access
    //save to db for future use (db saving not included in example)
    global $refreshToken;
    $refreshToken = $authObj->refresh_token;
}

$accessToken = $authObj->access_token;
return $accessToken;
}

文档显示,
client\u id
应该在花括号内。所以我认为应该是:

'client_id' => '{******-****-****-******-*****}',

文档显示,
client\u id
应该在花括号内。所以我认为应该是:

'client_id' => '{******-****-****-******-*****}',

可能改用
cURL
吧?已经试过了,但也没用。。。我将重试并发布更新;)我没有安装CURL。。现在它可以工作了:)也许可以改用
cURL
吗?已经试过了,但也不起作用。。。我将重试并发布更新;)我没有安装CURL。。现在它起作用了:)不,没什么区别。。。但是谢谢提醒:)它是返回一个空响应还是
false
?此时,我从Exact Online收到一个状态代码:500内部服务器错误。。因此,这也没有帮助:(.向项目添加了cURL代码,或者API有问题,或者您没有发送正确的参数。好的,谢谢!我将与Exact Online联系以获得解决方案,并于今天晚些时候将其发回此处。没有什么不同……但感谢提醒:)它是返回空响应还是
false
?此时,我从Exact Online获得一个状态代码:500内部服务器错误。。因此,这也没有帮助:(.将cURL代码添加到项目中要么API有问题,要么您没有发送正确的参数。OK,谢谢!我将与Exact Online联系以获得解决方案,并在今天晚些时候将其发布回这里