You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python版Dropbox API:如何访问团队及个人文件

Dropbox商业版API访问个人及团队文件解决方案

问题背景

作为Dropbox商业版团队成员,希望通过API实现与网页端登录相同的体验,查看个人及团队文件/文件夹。已使用以下代码完成OAuth2认证:

dropbox.DropboxOAuth2FlowNoRedirect(
    settings.DROPBOX_APP_KEY, 
    settings.DROPBOX_APP_SECRET,
    token_access_type="offline",
    scope=[
        "account_info.read",
        "file_requests.read",
        "file_requests.write",
        "files.content.read",
        "files.content.write",
        "files.metadata.read",
        "files.metadata.write",
        "files.team_metadata.read",
        "files.team_metadata.write",
        "sharing.read", 
        "sharing.write",
        "team_data.content.read",
        "team_data.content.write",
        "team_data.governance.read",
        "team_data.governance.write",
        "team_data.member",
        "team_data.team_space",
    ],        
)

但调用dbx.file_list_folders()时出现错误:

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.

已知可通过dbx_team.as_user("YOUR_TEAM_MEMBER_ID")切换身份,但不清楚如何获取YOUR_TEAM_MEMBER_ID。


解决方案

1. 获取当前授权用户的Team Member ID

无需遍历所有团队成员,直接通过DropboxTeam客户端调用接口获取自身的Team Member ID:

import dropbox

# 初始化团队客户端
dbx_team = dropbox.DropboxTeam(ACCESS_TOKEN)

# 获取当前授权用户的团队成员信息
current_member = dbx_team.team_members_get_current()
member_id = current_member.profile.team_member_id

2. 访问个人文件/文件夹

使用as_user()方法切换到个人身份,即可调用个人文件相关API,实现和网页端访问个人空间一致的逻辑:

# 切换到个人用户身份
dbx_user = dbx_team.as_user(member_id)

# 列出个人根目录文件
personal_files = dbx_user.files_list_folder("")
for entry in personal_files.entries:
    print(entry.name)

3. 访问团队空间文件/文件夹

直接使用DropboxTeam客户端调用团队文件相关API,即可访问团队空间内容:

# 获取团队文件夹列表
team_folders = dbx_team.team_folder_list()

# 遍历团队文件夹并列出内容
for folder in team_folders.team_folders:
    print(f"团队文件夹:{folder.name}")
    # 列出该团队文件夹下的文件
    team_files = dbx_team.files_list_folder(f"/{folder.team_folder_id}")
    for entry in team_files.entries:
        print(f"  - {entry.name}")

内容的提问来源于stack exchange,提问作者user1383029

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 06:34:56