We Want to Hear From You! What Do You Want to See on the Community? Tell us here!

Forum Discussion

VahagnGhaz's avatar
VahagnGhaz
Explorer | Level 3
6 years ago

How to provide the Dropbox-API-Select-User HTTP header with python API

Hi ! I've generated access token for Business App, and tried to make simple request 

dbx = dropbox.Dropbox(my_token)
dbx.files_list_folder(path).entries

But I got  

dropbox.exceptions.BadInputError:  '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

And from given documentation there is a part saying:   Specify the member_id of the user that the app wants to act on using a custom HTTP header called Dropbox-API-Select-User.

I just got stuck and need help for spicifying Dropbox-API-Select-User via python or in other ways if there are so. 

Additional info: I have  team admin permissions 

                            Permission type for app is  Team member file access               

6 Replies

  • VahagnGhaz's avatar
    VahagnGhaz
    Explorer | Level 3
    6 years ago

    Thanks for your reply. Everything works fine, but now I have another issue. All I need to list, write ...  in TEAM shared folder, but  when I use 

    self.dbx.files_list_folder(self.path).entries  

    I got ['Get Started with Dropbox Paper.url', 'Get Started with Dropbox.pdf'], which is my private folder content. So is there any way to access shared folder ?  

  • Greg-DB's avatar
    Greg-DB
    Icon for Dropbox Community Moderator rankDropbox Community Moderator
    6 years ago

    By default, API calls will operate in the private team member folder. It sounds like you want to access the team space though. To do so, you need to set the "path root" for the API call to be the team space. 

    I recommend reading the Namespace Guide, which covers this in detail.

    In the Python SDK in particular, to specify a particular root, you should use with_path_root. For example:

    dbx.with_path_root(dropbox.common.PathRoot.root("XXXXXXXXX")).files_list_folder("")

    or:

    dbx.with_path_root(dropbox.common.PathRoot.namespace_id("XXXXXXXXX")).files_list_folder("")

     

  • VahagnGhaz's avatar
    VahagnGhaz
    Explorer | Level 3
    6 years ago

    I got :: > dropbox.exceptions.PathRootError: PathRootError('2f7ac7e2ce9abb921272552f987f63b3', PathRootError('no_permission', None)),

    when try to run this command, so for permission do I need to make business app?

    self.dbx.with_path_root(dropbox.common.PathRoot.namespace_id("2")).files_list_folder("")

     

  • VahagnGhaz's avatar
    VahagnGhaz
    Explorer | Level 3
    6 years ago

    Actuall I have this structure, and all I need to do is work with shared ELEMENTS folder

  • VahagnGhaz's avatar
    VahagnGhaz
    Explorer | Level 3
    6 years ago

    Okay! I got that ! thanks for your support.  Just in case someone has this issue too, here is my solution 

    dbx = dropbox.Dropbox(my_token)
    root_namespace_id = dbx.users_get_current_account().root_info.root_namespace_id
    dbx = dbx.with_path_root(PathRoot.namespace_id(root_namespace_id))

     

About Dropbox API Support & Feedback

Node avatar for Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.6,036 PostsLatest Activity: 3 hours ago
410 Following

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 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!