Discuss Dropbox Developer & API
I am using the js sdk like this
const client = new dropbox.Dropbox({
accessToken: config.accessToken,
clientId: config.appKey,
clientSecret: config.secretKey,
});
dbx.auth.setRefreshToken(config.refreshToken);
await client.filesUpload({
path: '/folder/image.jpg',
contents: buffer,
});
But I am getting this error
'No auth function available for given request'
This looks correct. I also just tried this all myself and it worked successfully for me. (Setting refreshToken on dropbox.Dropbox and also calling setRefreshToken is redundant, but it shouldn't cause this issue as long as you're using the correct value.)
Please double check that you have copied in all of the values correctly, and didn't accidentally modify, misplace, or omit any of the values. For instance, your code here doesn't show how 'config' is set, so I can't replicate that exactly. I suggest printing out each each config value before you use them so you can check them.
For instance, make sure:
In the code you shared here, you're not supplying the refresh token to the "client" object that you're attempting the upload with. You're supplying the refresh token to a different "dbx" object".
Make sure you're giving the refresh token to the correct Dropbox object, e.g., your "client" variable.
Also, note that the Dropbox object will need the following credentials in order to automatically perform the refresh, so make sure you're supplying all of these to the same object:
In that case, please double check that you're supplying the correct credentials as outlined in my previous message, e.g., make sure you're using the correct app key/secret for that particular refresh token, etc.
I tried all of the above, I made sure the tokens and secrets are all correct but still nothing
I'll be happy to look into this further, but I'll need some more information. Please reply with:
Thanks, here is the information you asked for
here is what I did, I created an app and went to this url
I got redirected to this screen
I then entered this in my terminal
curl https://api.dropbox.com/oauth2/token \
-d code=<the code I got from the previous image> \
-d grant_type=authorization_code \
-d client_id=<APP KEY> \
-d client_secret=<APP SECRET>
and got a response object
In my js script I have the following code
const client = new dropbox.Dropbox({
accessToken: config.accessToken,
clientId: config.appKey,
clientSecret: config.secretKey,
refreshToken:config.refreshToken
});
client.auth.setRefreshToken(config.refreshToken);
await client.filesUpload({
path: '/folder/image.jpg',
contents: buffer,
});the access token and refresh token are what I got from the response from the curl request
I tried removing the refresh token in the class init and removing the client.auth.setRefreshToken but whatever combination of those I try gives me that error, I tried removing the accessToken an/or the clientId but nothing helped
The full text of the error is this
{
name: "DropboxResponseError",
status: 400,
headers: {
},
error: {
error: "invalid_request",
error_description: "No auth function available for given request",
},
}
This looks correct. I also just tried this all myself and it worked successfully for me. (Setting refreshToken on dropbox.Dropbox and also calling setRefreshToken is redundant, but it shouldn't cause this issue as long as you're using the correct value.)
Please double check that you have copied in all of the values correctly, and didn't accidentally modify, misplace, or omit any of the values. For instance, your code here doesn't show how 'config' is set, so I can't replicate that exactly. I suggest printing out each each config value before you use them so you can check them.
For instance, make sure:
Turns out the secret key was undefined, so much for avoiding typescript, thanks
Hi there!
If you need more help you can view your support options (expected response time for a 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!