phpapipinterest

Pinterest 'grant_type' is a required property


Im trying to get access_token from pinterest api but getting this error.

'grant_type' is a required property

I'm using this login url:

https://www.pinterest.com/oauth/?client_id=APPID&redirect_uri=REDURL&response_type=code&scope=pins:write&state=eer

Redirect url have this code, which throws the error.

$vars = array(            
    "grant_type" => "authorization_code",
    "code" => $_GET["code"],
    "redirect_uri" => REDURL
);
$headers = [
    'Authorization: Basic '.base64_encode("APPID:SECRET"),
    'Content-Type: application/x-www-form-urlencoded'
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://api.pinterest.com/v5/oauth/token");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$vars);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec ($ch);
curl_close ($ch);

print  $result;

I'm trying to follow this: https://developers.pinterest.com/docs/getting-started/authentication/


Solution

  • Manual says about CURLOPT_POSTFIELDS,

    if value is an array, the Content-Type header will be set to multipart/form-data.

    That appears to be colliding with the application/x-www-form-urlencoded you are trying to send here.

    Pass the data as a URL-encoded string instead, using http_build_query.