Skip to main content

Can not view the files from my root folder


Hello, I have a question about the box API when OAuth 2.0 is used. My end goal is to upload a file to box using a bot. The first part of my test is to set up the API and do this manually for now.


With this goal in mind, I created a personal box account (my organization suggested doing this) to do testing. Then, I created an application and followed the instructions from box to authenticate using Python and SDK.


The problem that I’m facing is that I cannot view my root folder. I get a message saying <Box Folder - 0 (All Files)>. I can create folders, search for files, and upload file to box root folder.


I read some of the posts on the forum and I already discarded the possibility that I am using a service account because when I look at my client.user() i see my user ID and email. Also, I’m using a developer token and to my understanding, a developer token is associated with the user who’s logged into the developer console. The code that I’m using is below, thank you!




from boxsdk import OAuth2, Client



auth = OAuth2(

    client_id='MY_CLIENT_ID...',

    client_secret='MY_CLIENT_SECRET...,

    access_token='rC2TetewQsKzZxCz2gVdM0VbLDcD1NcZ'

)

auth_url, csrf_token = auth.get_authorization_url('https://developer.box.com/auth/callback')



# redirect(auth_url, code=302)

client = Client(auth)



#I get my user 

user = client.user().get()

print(f'\n\nThe current user is \n{user}\n\n')



#can not get the root folder

root_folder = client.root_folder().get()

print("the root folder is ",root_folder)



#But I can send files to the root folder, create folders, do query searches etc

folder_id = '0'

new_file = client.folder(folder_id).upload('test.pdf')

print(f'File "{new_file.name}" uploaded to Box with file ID {new_file.id}')

2 replies

CodeBoxSeb
  • Participating Frequently
  • 58 replies
  • December 4, 2023

Welcome to the Forum, @Sahachel24


What are you trying to do with your root folder exactly ?

For all customers, the root folder ID is always = to 0

There is no specific folder ID for the root folder.


rbarbosa Box
  • Developer Advocate
  • 553 replies
  • December 4, 2023

Hi @Sahachel24 ,


I’ve tried your code with a couple variations and they all work just fine.


If I understood correctly, you’re trying to read the content of a folder, specifically the root folder. That is done with the folder.get_items()method. The folder.get() method returns the folder metadata it self.


For example based in your code:


from boxsdk import OAuth2, Client



auth = OAuth2(

    client_id='by...hm',

    client_secret='ad...Vjr',

    access_token='Tx...Db'

)

# auth_url, csrf_token = auth.get_authorization_url('https://developer.box.com/auth/callback')



# redirect(auth_url, code=302)

client = Client(auth)



# I get my user 

user = client.user().get()

print(f'\n\nThe current user is \n{user}\n\n')



# can not get the root folder

root_folder = client.root_folder().get()

# this also works

# root_folder = client.folder('0').get() 

print("the root folder is ", root_folder)





# But I can send files to the root folder, create folders, do query searches etc

# folder_id = '0'

# new_file = client.folder(folder_id).upload('test.pdf')

# print(f'File "{new_file.name}" uploaded to Box with file ID {new_file.id}')



# list items in root folder

# this also works

# items = client.folder(folder_id='0').get_items(limit=100, offset=0)

items = root_folder.get_items()

for item in items:

    print(f"{item.type} {item.id} {item.name}")




and in my case this script returns:


The current user is 

<Box User - 25428698627 (Free Dev 001)>





the root folder is  <Box Folder - 0 (All Files)>

folder 234102715058 My Sign Requests

folder 216797257531 My Signed Documents

folder 221723756896 UIE Samples

folder 223095001439 workshops

file 1204688948039 Get Started with Box.pdf

file 1351892000645 sample_file_copy.txt


Let me give you a couple of resources that you might find interesting:


We also have a sample app template for the classic SDK, which will trigger the oAuth flow, you can take a look here:



This to avoid having to re-generate the developer token every 60 minutes.


We also have a couple of workshops.


For the classic SDK:



For the new Gen SDK



Both have sample apps on different topics.


Let us know if this helps.


Cheers


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings