为什么我的POST请求在cURL中使用cURL而不在Postman中超时?

时间:2019-03-15 17:44:46

标签: php curl

我有一个auth.php文件,该文件应向具有一些标头,数据和内容的API发送请求。

我尝试了Postman,并几乎立即给了我答复。

我复制了代码(PHP> cURL)并进行了尝试,它会持续waiting for MYPRIVATESITE.com 30秒(我将超时时间设置为该时间),然后是cURL ERROR: TIMED OUT(或类似的东西) )。

我做错了什么?它可以与例如邮递员,那为什么不访问我的网站?

$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => "https://discordapp.com/api/v6/oauth2/token",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => "client_id=PRIVATEID&client_secret=PRIVATEKEY&grant_type=authorization_code&code=$code&redirect_uri=https%3A%2F%2Fkanebot.epizy.com%2Fauth.php&scope=identify%20guilds&undefined=",
    CURLOPT_HTTPHEADER => array(
        "Content-Type: application/x-www-form-urlencoded",
        "cache-control: no-cache"
    )
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo "cURL Error #:" . $err;
} else {
    echo $response;
}

注意:PRIVATEKEYPRIVATEID在那,我只是删除它们,因为我不想让其他人偷它。它已定义,并且可以正常工作(阅读)。 $code也已定义。

1 个答案:

答案 0 :(得分:1)

您在&POSTFIELDS之间的client_secret中缺少grant_type运算符

尝试添加&,然后查看其是否正常工作(它将肯定会解决您遇到的问题之一)

client_id=PRIVATEID&client_secret=PRIVATEKEYgrant_type=authorization_code&code=$code&redirect_uri=https%3A%2F%2Fkanebot.epizy.com%2Fauth.php&scope=identify%20guilds&undefined=