You might see that the Dropbox Community team have been busy working on some major updates to the Community itself! So, here is some info on what’s changed, what’s staying the same and what you can expect from the Dropbox Community overall.

Forum Discussion

sr_c's avatar
sr_c
Explorer | Level 3
2 years ago

Unable to Retrieve a new short-lived access token through Javascript

Hello,

I followed the approach described in below post to get refresh token

https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Get-refresh-token-from-access-token/td-p/596739

 

Through Javascript I am trying to get new short lived access token (step 7 in above post) using below code, but I am getting error as given below

-->"error": "invalid_request", "error_description": "The request parameters do not match any of the supported authorization flows. Please refer to the API documentation for the correct parameters."

 

If I tried the same through Postman I am able to get the access token.

 

My javascript code is given below

--------------------------------------------------------

let tokobj = {
"refresh_token" : <My refresh token obtained using above approach>,
"grant_type" : "refresh_token",
"client_id" : <my app key>,
"client_secret" : <my app secret>
}
let reftokendpoint = "https://api.dropbox.com/oauth2/token";
let tokenOptions = {
method: "POST",
headers: {
"Content-Type" : "application/json"
},
body: JSON.stringify(tokobj)
}

const tokenResults = await fetch(reftokendpoint, tokenOptions);
const tokenPost = await tokenResults.text();
console.log('Exec status', tokenPost)

------------------------------------------------------------------------------------

 

Please suggest how this can be resolved

 

Thanks

  • That would change the "Content-Type" request header value that you send, but you need to also make sure the value you're sending in the body actually uses that format. That is, you should be formatting the parameters accordingly, not using JSON.stringify. For example, you may want to use URLSearchParams, or whatever functionality you prefer and have available for formatting the parameters accordingly.

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

    The parameters for the /oauth2/token endpoint should be sent as 'application/x-www-form-urlencoded' POST parameters, not JSON. I see your code is sending them as JSON so the API does not receive them and so the operation fails with that error. Please update your code to send the parameters using the  'application/x-www-form-urlencoded' format.

    • sr_c's avatar
      sr_c
      Explorer | Level 3

      Hello Greg-DB

      I tried with below, but the error remains same. Not sure where is the issue.

      headers: {
      "Content-Type" : "application/x-www-form-urlencoded"
      }
      Thanks
      • Greg-DB's avatar
        Greg-DB
        Icon for Dropbox Staff rankDropbox Staff

        That would change the "Content-Type" request header value that you send, but you need to also make sure the value you're sending in the body actually uses that format. That is, you should be formatting the parameters accordingly, not using JSON.stringify. For example, you may want to use URLSearchParams, or whatever functionality you prefer and have available for formatting the parameters accordingly.

About Dropbox API Support & Feedback

Node avatar for Dropbox API Support & Feedback

Find help with the Dropbox API from other developers.

5,877 PostsLatest Activity: 10 hours ago
325 Following

If you need more help you can view your support options (expected response time for an email or ticket is 24 hours), or contact us on X or Facebook.

For more info on available support options for your Dropbox plan, see this article.

If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!