Reputation: 3791
When I run the following cURL call natively I get an expected result.
curl -X POST -H "Accept:application/json" -H "Content-Type: application/x-www-form-urlencoded" "https://XXXX" -d 'grant_type=authorization_code&code=YYYY
When I run the cURL call via PHP I get a different response.
$curl = curl_init('https://XXXX');
curl_setopt_array($curl, array(
CURLOPT_HTTPHEADER => array(
'Accept: application/json',
'Content-type: application/x-www-form-urlencoded'
),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => array(
'grant_type' => 'authorization_code',
'code' => 'YYYY'
),
));
$response = curl_exec($curl);
curl_close($curl);
Is there any functional difference between the native call and the PHP approach? Thanks.
Upvotes: 1
Views: 404
Reputation: 15827
The problem is that PHP's cURL doesn't trust the server's HTTPS certificate. Differently command line curl
by default does.
The quick fix is to configure cURL to always trust the server:
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
The proper fix is described here
http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/
Upvotes: 2