We're making changes to the Community, so you may have received some notifications - thanks for your patience and welcome back. Learn more here.

Forum Discussion

Fomka_Wyverno's avatar
Fomka_Wyverno
New member | Level 2
11 months ago

Get Access Token JavaScript in fetch

 

 

            const parameters = {
                'code': params.code,
                'grant_type': 'authorization_code',
                'redirect_uri': window.location.origin,
                'client_id': dataApp.client_id,
                'client_secret': dataApp.client_secret
            }


            console.log(parameters);

            fetch('https://api.dropbox.com/oauth2/token', {
                method: 'POST',
                body: JSON.stringify(parameters)
            }).then(response => console.log(response))
                .catch(error => console.log(`Error in POST: ${error}`));

 

 

 

params.code - this is code when i first redirect to my http in url parameters
window.location.origin - origin url my web-site
dataApp.client_id - Api Key my application
dataApp.client_secret - App secret my application
But when fetching my response 400 - why?

I looked at the curl convenerator in js suggested to do this

 

 

fetch('https://api.dropbox.com/oauth2/token', {
  method: 'POST',
  body: new URLSearchParams({
    'code': params.code,
    'grant_type': 'authorization_code',
    'redirect_uri':  window.location.origin,
    'client_id': dataApp.client_id,
    'client_secret': dataApp.client_secret
  })
});

 

 

But this again not work


  • Greg-DB's avatar
    Greg-DB
    11 months ago

    It looks like you're sending the parameters as JSON, but the /oauth2/token endpoint expects them as application/x-www-form-urlencoded POST parameters, and so your parameters aren't getting read. Update your implementation to send application/x-www-form-urlencoded POST parameters instead.

  • Check the contents of the response body for that error response. It should contain a more specific error message.

    • Fomka_Wyverno's avatar
      Fomka_Wyverno
      New member | Level 2

      The request parameters do not match any of the supported authorization flows. Please refer to the API documentation for the correct parameters.


      but I don't understand why if I used all the parameters from the documentation. At the same time, if you do it in сURL, everything will work out well

      • Greg-DB's avatar
        Greg-DB
        Icon for Dropbox Staff rankDropbox Staff

        It looks like you're sending the parameters as JSON, but the /oauth2/token endpoint expects them as application/x-www-form-urlencoded POST parameters, and so your parameters aren't getting read. Update your implementation to send application/x-www-form-urlencoded POST parameters instead.