如果通过浏览器加载,卷曲和PHP将无法工作

时间:2017-02-16 07:10:45

标签: php api curl dropbox dropbox-api

我正在尝试将此调用的响应写入文件,但只有在cli中运行它才会写入。当我通过浏览器运行时没有任何反应。     

$url = 'https://api.dropbox.com/1/oauth2/token';

$app_key = '************';
$app_secret = '***********';

$auth_code = '******************************';
$redirect_uri = "https://dev.subely.com/test/";

$rdata = 'code=' . $auth_code . '&grant_type=authorization_code&redirect_uri=' . $redirect_uri;

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $rdata);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt( $ch, CURLOPT_HEADER, 0);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt( $ch, CURLOPT_USERPWD, $app_key.':'.$app_secret);


$response = curl_exec( $ch );

file_put_contents("/tmp/response.log", $response, FILE_APPEND);
echo "done";
?>

1 个答案:

答案 0 :(得分:2)

最有可能是SSL验证问题(默认SSL验证为TRUE)。正如你所说它在CLI中工作但是从网络上工作它不起作用。

添加

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

此外,如果你检查卷曲执行情况会很好

$response = curl_exec( $ch );

if($response === false) {
    echo 'Curl error: ' . curl_error($ch);
} else {
   file_put_contents("/tmp/response.log", $response, FILE_APPEND);
}