We all started somewhere! Share your experience on the Get Advice: Let's Get Started Sweepstakes thread and be entered to win a $100 credit on your Constant Contact account.

Getting error during server Oauth 2.0 exchange authorization code for an access token

christianh3714
Participant

Getting error during server Oauth 2.0 exchange authorization code for an access token

Using cURL, I am able to get the authorization code.  However when then using cURL to try to exchange for an access token, I get an error: Client authentication (if the client has credentials) or the client_id parameter is required for an authorization request using the code grant type.  Not sure what I am doing wrong.  Any suggestions?

3 REPLIES 3
Courtney_E
Moderator

Hello Christian,

 

The steps to Exchange the Authorization Code for an Access Token and a Refresh Token can be found on the OAuth2.0 Server Flow page under Step 4:
https://v3.developer.constantcontact.com/api_guide/server_flow.html


Please note that this request requires the string “client_id:client_secret” to be encoded using Base 64.


Regards,

Courtney E.
API Support Specialist

Did I answer your question?
If so, please mark my post as an "Accepted Solution" by clicking the Accept as Solution button in the bottom right hand corner of this post.
MrRoyo
Regular Participant

Hello Courtney E

 

I am getting the same issue. I am able to get the authorization code using curl. But when I try to exchange authorization code with access token it gives me error "Bad message 400, reason: Unkown version". I am using the same code provided in the Server Flow guide:

 

function getAccessToken($redirectURI, $clientId, $clientSecret, $code) {
// Use cURL to get access token and refresh token
$ch = curl_init();

// Define base URL
$base = 'https://idfed.constantcontact.com/as/token.oauth2';

// Create full request URL
$url = $base . '?code=' . $code . '&redirect_uri=' . $redirectURI . '&grant_type=authorization_code&scope=contact_data';
curl_setopt($ch, CURLOPT_URL, $url);

// Set authorization header
// Make string of "API_KEY:SECRET"
$auth = $clientId . ':' . $clientSecret;
// Base64 encode it
$credentials = base64_encode($auth);
// Create and set the Authorization header to use the encoded credentials
$authorization = 'Authorization: Basic ' . $credentials;
curl_setopt($ch, CURLOPT_HTTPHEADER, array($authorization));

// Set method and to expect response
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Make the call
$result = curl_exec($ch);
curl_close($ch);
return $result;
}

Hello MrRoyo,

 

Thank you for reaching out to Constant Contact API Developer Support, and for your patience. My team is here to assist outside software developers with questions about building into Constant Contact's API.

 

It looks like we're working with you directly via email regarding your inquiry, but I wanted to close the loop here as well. If you haven't received our reply, please let us know via email at webservices@constantcontact.com, and reference case number 28232085.


Regards,

Courtney E.
API Support Specialist

Did I answer your question?
If so, please mark my post as an "Accepted Solution" by clicking the Accept as Solution button in the bottom right hand corner of this post.
Developer Portal

View API documentation, code samples, get your API key.

Visit Page