Curious about A, B, C, and D drives? Learn what they mean and how to use them effectively with Dropbox in this handy guide! - check it out now!
Forum Discussion
Brad Henderson
7 months agoExplorer | Level 4
How to get an Access Token from a Refresh token from within B4A
Hello All, I have created a refresh token using the method thanks to "Здравко". Manually using a web browser and Windows Command prompt. The command prompt is: curl https://api.dropbox.com/oa...
- 7 months ago
Hi Brad Henderson,
To be honest I'm not familiar with the environment you're using. On the first look though, it uses OkHttp as underlying library. So you can take a look here for a simplistic example - example how OkHttp works. It may be easier for you to encode everything in the body (i.e. pass in the body text: "grant_type=refresh_token&refresh_token=<REFRESH_TOKEN>&client_id=<APP_KEY>&client_secret=<APP_SECRET>"; replace all "<...>" tags appropriately). Find what matches to desired OkHttp calls exactly in your environment (something, I believe you may do). 😉
Hope this helps.
PS: Just to avoid confusion: The example supposes JSON content, but in your case the content type is different, so instead of "application/json" (as is in the example) you have to set "application/x-www-form-urlencoded" as content type (MediaType in the example).
Brad Henderson
7 months agoExplorer | Level 4
Greg,
I had a look at the documentation and it appears the command I need is this one:
curl https://api.dropbox.com/oauth2/token \ -d grant_type=refresh_token \ -d refresh_token=<REFRESH_TOKEN> \ -d client_id=<APP_KEY> \ -d client_secret=<APP_SECRET>
I have tried to apply this in my B4A code as follows:
Dim data As Map
data.Initialize
data.Put("grant_type", "refresh_token")
data.Put("refresh_token", "REFRESH_TOKEN")
data.Put("client_id", "APP_KEY")
data.Put("client_secret", "APP_SECRET")
Dim j As HttpJob
j.Initialize("", Me)
j.PostString("https://api.dropbox.com/oauth2/token",data.As(JSON).ToString)
j.GetRequest.SetContentType("application/json")
Wait For (j) JobDone(j As HttpJob)
If j.Success Then
Log(j.GetString)
Else
Log(j.ErrorMessage)
End If
j.Release
But I get this error:
ResponseError. Reason: , Response: {"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."}
While I realize you may not be familiar with this language, is there anything glaringly wrong from what you see?
Thanks Brad
Greg-DB
Dropbox Staff
7 months agoBrad Henderson Здравко is correct; these parameters should be sent as application/x-www-form-urlencoded, not JSON.
- Brad Henderson7 months agoExplorer | Level 4
Thanks Greg,
Yes, made this change and it worked.
About Discuss Dropbox Developer & API
Make connections with other developers808 PostsLatest Activity: 11 hours ago
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!