Need to see if your shared folder is taking up space on your dropbox 👨‍💻? Find out how to check here.

Forum Discussion

Simone11's avatar
Simone11
Explorer | Level 4
7 years ago
Solved

Dropbox for Business API Access token login process.

Hi There.

I have an iOS apllication written in Objective-C. I have successfully integrated Dropbox API in my app and I can upload and download data from dropox even using the Access Token for it. 

Short code sample to dowload data as per the document as follows:

 [[client.filesRoutes listFolder:dbPathToIpad]
                     setResponseBlock:^(DBFILESListFolderResult *response, DBFILESListFolderError *routeError, DBRequestError *networkError) {
                         NSLog(@"response__:%@",response);
                         if (response) {......
}

Now, I have shifted my account to dropbox for business and have few team members in my team. Can I get the process to access folders in each team members account using Access Token of Dropbox for Business API. I am the admin of the account and I have generated Access Token for Dropbox For Business and given permission to access team files.

The idea here is to bypass Auth login using Access Token generated. And the app is destributed to my team members. they should somehow access ther own account using this Access token I genrated and the specific folder structure in their account. Please let me know how is this possible since this is a requirement from my Client.

There is nothing much given to access files using Dropbox for Business API in this link: https://github.com/dropbox/dropbox-sdk-obj-c

Also, if I use this Business Access token I have created in current code of mine i get error response from dropbox as :

DropboxBadInputError[{
    ErrorContent = "Error in call to API function \"files/list_folder\": This API function operates on a single Dropbox account, but the OAuth 2 access token you provided is for an entire Dropbox Business team.  Since your API app key has team member file access permissions, you can operate on a team member's Dropbox by providing the \"Dropbox-API-Select-User\" HTTP header or \"select_user\" URL parameter to specify the exact user <https://www.dropbox.com/developers/documentation/http/teams>.";
    RequestId = 2cad3ee7906d1fed388f2146c456116d;
    StatusCode = 400;
    UserMessage = nil;
}];

Please provide me with link or any reference on how to handle this.

  • If you have a Dropbox Business API access token for an app with the "team member file access" permission and want to programmatically access a specific member's account using the Dropbox Objective-C SDK, you should use the DBTeamClient userClientWithMemberId: method. That will give you a DBUserClient you can use to access the user methods, such as listFolder. (It sets the "Dropbox-API-Select-User" header mentioned in the error message you shared.)

    That would look like this:

    DBTeamClient *teamClient = [[DBTeamClient alloc] initWithAccessToken:ACCESS_TOKEN];
    DBUserClient *userClient = [teamClient userClientWithMemberId:memberID];
    
    [[userClient.filesRoutes listFolder:path]
     setResponseBlock...

    The member ID would be the team member ID (which starts with "dbmid:"). You can get those from membersList/membersListContinue, for instance.

    Also, note that client-side applications, such as on iOS, can't keep secrets, such as access tokens, from a malicious user. For that reason, we don't recommend sharing/hard-coding access tokens in client-side applications. For example, in your described scenario, one team member could potentially extract the access token and use it to access another member's account.

12 Replies

Replies have been turned off for this discussion

About Dropbox API Support & Feedback

Node avatar for Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.

The Dropbox Community team is active from Monday to Friday. We try to respond to you as soon as we can, usually within 2 hours.

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, Facebook or Instagram.

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!