We're making changes to the Community, so you may have received some notifications - thanks for your patience and welcome back. Learn more here.

Forum Discussion

JoffreyActeis's avatar
JoffreyActeis
New member | Level 2
2 years ago

400 Client Error: Bad Request for url: https://api.dropboxapi.com/2/files/create_folder_v2

Hello, I can't get my code Python to work. Can you help me?

 

import dropbox
import requests

# Remplacez ceci par votre propre jeton d'accès OAuth 2
ACCESS_TOKEN = 'Mytoken'

# Remplacez ceci par l'ID de l'utilisateur spécifique que vous souhaitez sélectionner
user_id = ('dbid:Myid')

# Initialisez le client Dropbox
client = dropbox.DropboxTeam(ACCESS_TOKEN)

# Spécifiez le chemin complet du dossier que vous souhaitez créer
chemin_complet_dossier = 'Acteis IUL/Joffrey/NewDossier/'

# Dictionnaire associant les utilisateurs à leurs autorisations
utilisateurs_autorisations = {
    'my email': 'editor',
    #'utilisateur2@email.com': 'editor',
    #'utilisateur3@email.com': 'viewer',
}

# Créez un dictionnaire de données pour la demande POST
data = {
    "autorename": False,
    "path": chemin_complet_dossier
}
# Créez un dictionnaire d'en-têtes pour spécifier l'utilisateur avec "Dropbox-API-Select-User"
headers = {
    'Authorization': f'Bearer {ACCESS_TOKEN}',
    'Content-Type': 'application/json',
    'Dropbox-API-Select-User': user_id
}

# Effectuez une requête POST pour créer le dossier avec l'en-tête spécifié

try:
    response = requests.post(url, headers=headers, json=data)
    response.raise_for_status()

    # Affichez un message de confirmation si le dossier est créé avec succès
    print(f'Dossier "{response.json()["name"]}" créé avec succès à l\'emplacement : {response.json()["path_display"]}')

    # Partagez le dossier avec chaque utilisateur de la liste et attribuez-leur des autorisations
    for utilisateur, autorisation in utilisateurs_autorisations.items():
        partage_response = client.sharing_add_folder_member(chemin_complet_dossier, utilisateur, autorisation)
        print(f'Le dossier a été partagé avec succès avec {utilisateur} avec l\'autorisation : {autorisation}')

except requests.exceptions.RequestException as e:
    # Gérez les erreurs en cas d'échec de la création du dossier
    print(f'Erreur lors de la création du dossier : {e}')

except dropbox.exceptions.ApiError as e:
    # Gérez les erreurs liées à l'API Dropbox
    print(f'Erreur de l\'API Dropbox : {e}')
  • Greg-DB's avatar
    Greg-DB
    Icon for Dropbox Staff rankDropbox Staff

    When you get a 400 error like this, be sure to print out the response body, as it should contain a more specific error message indicating what the issue is. If you need help with that error, please print it out and share it.

     

    Also though, I notice that you're importing and using both 'dropbox' and 'requests', and you're using 'requests' to call the /2/files/create_folder_v2 endpoint yourself. We recommend using the official SDKs, such as 'dropbox' whenever possible though, and it implements native methods for the endpoints for you, so you don't need to use a network client directly, like you are with 'requests'. Specifically, instead of calling /2/files/create_folder_v2 with 'requests', you can use the provided files_create_folder_v2 method on the Dropbox class.

     

    I notice you are using the 'Dropbox-API-Select-User' header; that's also available natively on DropboxTeam via the as_user method, which would then give you a Dropbox object which you can then use to call files_create_folder_v2, etc.

About Dropbox API Support & Feedback

Find help with the Dropbox API from other developers.

5,875 PostsLatest Activity: 3 hours ago
323 Following

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!