cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Announcements
Are you interested in hearing how one of our Community members uses Dropbox for sailing trips? Read all about it here.

Dropbox API Support & Feedback

Find help with the Dropbox API from other developers.

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Authentication to dropbox

Authentication to dropbox

Tshaniii
Helpful | Level 5
Go to solution

1. I am developing an application, which will have about 4-6 users with different email addresses. 

2. Then I have created a dropbox app and scope is the application folder (from this account)

3. So I did the part where you get the code, from there it is redirected to here --> http://localhost:5000/auth/dropbox-redirect?code=<generated-code>

4. However, i get an error.... this endpoint is the server side and the running code is this  (ocalhost:3000/dashboard - is frontend)

 

const dbxRedirect = async (req, res, next) => {
    try {

        const { code, state } = req.query;

        console.log(`code:${code}`);
 

       
 try{
            let token =  await dbx.auth.getAccessTokenFromCode(redirectUri, code);
            // store token and invalidate state
            req.session.token = token;
            console.log(token);
            mycache.del(state);
            res.send(token);
        }catch(error){
            console.log(error);
            return next(error);
        }
};
 
DropboxResponseError: Response failed with a 400 code
at D:\GitHubProjects\docMgtSys\document-management-system\node_modules\dropbox\cjs\src\response.js:34:11
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async dbxRedirect (D:\GitHubProjects\docMgtSys\document-management-system\controllers\auth-controller.js:136:26) {
status: 400,
headers: Headers {
[Symbol(map)]: [Object: null prototype] {
'content-security-policy': [Array],
'content-type': [Array],
'accept-encoding': [Array],
date: [Array],
server: [Array],
'content-length': [Array],
'x-dropbox-response-origin': [Array],
'x-dropbox-request-id': [Array],
connection: [Array]
}
},
error: {
error: 'invalid_request',
error_description: 'unknown field "token_access_type"'
}
}
DropboxResponseError: Response failed with a 400 code
at D:\GitHubProjects\docMgtSys\document-management-system\node_modules\dropbox\cjs\src\response.js:34:11
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async dbxRedirect (D:\GitHubProjects\docMgtSys\document-management-system\controllers\auth-controller.js:136:26)
 
1 Accepted Solution

Accepted Solutions

Greg-DB
Dropbox Staff
Go to solution

@Tshaniii Also, since you're using the Dropbox JavaScript SDK, you shouldn't manage those URL parameters directly anyway. You would use the getAuthenticationUrl method to build your authorization URL.

 

And you shouldn't be passing the /oauth2/authorize authorization URL to getAccessTokenFromCode. That method takes your redirect URI and the authorization code. From what you shared, your redirect URI is "http://localhost:5000/auth/dropbox-redirect".

 

You can see an example of using this method here.

View solution in original post

3 Replies 3

Здравко
Legendary | Level 20
Go to solution

@Tshaniii wrote:
...
...
error: {
error: 'invalid_request',
error_description: 'unknown field "token_access_type"'
}
...

Hi @Tshaniii,

Hm..🤔 Yes, there is no such type of access token literal. 'legacy' is something assumed by default! In particular 'legacy' is the same like 'online' (but might change at some point in the future; as has been different thing in the past). Take a look in documentation what 'token_access_type' can be. As is mentioned there, it's either 'online' or 'offline'; no other literal is allowed.

Hope this helps.

 

PS: One more note about your 'redirectUri'! As assigned it's not a redirect URI; it's URL that you should redirect your users to authorize your application (grant access to their accounts data). The redirect URI is part of this URL!

Greg-DB
Dropbox Staff
Go to solution

@Tshaniii Also, since you're using the Dropbox JavaScript SDK, you shouldn't manage those URL parameters directly anyway. You would use the getAuthenticationUrl method to build your authorization URL.

 

And you shouldn't be passing the /oauth2/authorize authorization URL to getAccessTokenFromCode. That method takes your redirect URI and the authorization code. From what you shared, your redirect URI is "http://localhost:5000/auth/dropbox-redirect".

 

You can see an example of using this method here.

Tshaniii
Helpful | Level 5
Go to solution

Thank you very much @Greg-DB  & @Здравко ! Got it done 🙂

Need more support?
Who's talking

Top contributors to this post

  • User avatar
    Tshaniii Helpful | Level 5
  • User avatar
    Greg-DB Dropbox Staff
  • User avatar
    Здравко Legendary | Level 20
What do Dropbox user levels mean?