Vishaal Kalwani
Vishaal Kalwani

Reputation: 740

Unable to exchange `code` for Salesforce Marketing Cloud token

I am trying to exchange a Salesforce Marketing Cloud (SFMC) authorization_code for an access_token per the docs here: https://developer.salesforce.com/docs/atlas.en-us.mc-app-development.meta/mc-app-development/access-token-app.htm

curl https://{my_subdomain}.auth.marketingcloudapis.com/v2/token \
  --request POST  \
  --header "Content-Type: application/json" \
  --data '{"grant_type": "authorization_code", "code": "{{my_code}}", "client_id": "{{my_client_id}}", "redirect_uri": "https://127.0.0.1:80/", “client_secret: “{{my_client_secret}}”, "scope": "audiences_read list_and_subscribers_write offline"}'

Yet it continually gives me the following error:

{"documentation":"https://developer.salesforce.com/docs/atlas.en-us.mc-apis.meta/mc-apis/error-handling.htm","errorcode":0,"message":"Bad Request"}%

I have no idea where I am going wrong, any help is appreciated.

I was seeing "correct" errors when I was using an expired code and when my client_id and/or client_secret were wrong, but nothing after I pasted in the correct values. Perhaps it is my scopes?

According to the docs linked in the error code, The token was not found in the request, or it is invalid or expired.. This is the only error code that has customcode == 0. It is strange since I am trying to get a token, not pass one in, and that error code is associated with a 401, which may or may not be what I am receiving back.

Upvotes: 0

Views: 382

Answers (1)

Vishaal Kalwani
Vishaal Kalwani

Reputation: 740

It turns out my client_secret in my data was using the incorrect double quote. It was a slanted double-quote. I discovered this when I tried using Python3 instead of cURL and was converting my JSON above into JSON to pass to the requests library. I was able to successfully get a token.

So the answer is, the above is correct, just watch your encodings!

Upvotes: 0

Related Questions