Search code examples
javascriptreactjsoauth-2.0pkce

"grant_type parameter is missing": Spotify API PKCE OAuth Flow Troubles


I'm developing a React app that uses the Spotify API I can't figure out why I'm getting this error when trying to get an access token with the API's PKCE OAuth flow.

{
   error: "unsupported_grant_type",
   error_description: "grant_type parameter is missing"
}

I'm following the directions from the guide exactly and I'm able to obtain an auth code just fine. Here's my call trying to get the token.

let res = await axios.post("https://accounts.spotify.com/api/token", {}, {
    headers: {
        "Content-Type": "application/x-www-form-urlencoded"
    },
    params: {
        "grant_type": "authorization_code",
        "code": data.code,
        "redirect_uri": redirectUri,
        "code_verifier": verifier,
        "client_id": clientId
      }
    }).catch(err => console.error(err));

I've tried passing the params in the body of the post request and as url params and both produce the same results. As you can see, I'm clearly providing a grant_type and I'm using the value that the guide said to use.


Solution

  • Have you traced the message and verified that the request body is definitely as expected? Your OAuth fields look totally correct so I suspect this could just be an axios syntax issue.

    I could be wrong but should the 'params' field be called 'data' instead, as in this class of mine.