I have sucessfully used Postman on my desktop to generate tokens and make API calls. However, I am really stuck trying to use the returned "refresh_token" to get a new access token. I can't get it working directly in postman or php.
If I copy-paste the "access_token" Postman retreived into my php code to "get_addresses" it works fine (but obviously stops working after 5 mins). However, if I copy-paste the "refresh_token" into my php code to refresh the access token (its a different file). I get:
"error":"invalid_client","error_description":"Parameter 'client_id' and/or 'client_secret' are invalid."
Here is the code block:
// define params
$client_id = "f9xxxx";
$client_secret = "?xxxxxxxx";
$refresh_token= "<extracted from the original postman call>" ;
$token_url = "https://oauth.accounting.sage.com/token";
$header = array('Accept: application/json','Content-Type: application/x-www-form-urlencoded');
$content = "client_id=$client_id&client_secret=$client_secret&grant_type=refresh_token&refresh_token=$refresh_token";
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $token_url,
CURLOPT_HTTPHEADER => $header,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $content
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Incidentally, I did try it without the accept array element and it made no difference. I also tried this directly in Postman by creating a new POST called "token renewal", but that didn't work either. I am missing something?
Any pointers appreciated.