Logo
Section 1 / 3

添加、列出和删除文件成员

学习如何使用 Dropbox API 添加新的文件成员,获取所有拥有文件访问权限的成员列表,以及移除特定的文件成员。

导入

添加、列出和删除文件成员

学习如何使用 Dropbox API 添加新的文件成员,获取所有拥有文件访问权限的成员列表,以及移除特定的文件成员。

在本课程中,我们将学习 Dropbox API 提供的 sharing 命名空间。该命名空间的端点用于创建和管理共享链接及文件夹。本课程将介绍以下操作:

  • add_file_member
  • list_file_members
  • remove_file_member_2

注意:sharing 命名空间的端点仅支持具有完整 Dropbox 访问权限的应用程序。例如,如果你创建的应用程序仅具有“应用文件夹”访问权限,则“sharing”端点将无法使用。

向文件添加成员

/sharing/add_file_member 端点用于向文件添加用户。执行此操作需要启用 sharing.write 权限。

请求参数

以下是可传递给该端点调用的参数:

参数名称格式是否必需描述
file字符串是指定要添加成员的文件。可以使用文件的完整路径或文件 ID。
members列表是要添加到指定文件的用户列表。可通过用户的 Dropbox ID 或电子邮件地址指定成员。
custom_message字符串否可包含一条发送给新添加成员的消息。
quiet布尔值否指定成员应如何被通知(例如通过邮件或设备通知)。默认值为 false。
access_level对象否定义新添加成员的角色(可以是 owner、editor、viewer 或 viewer_no_comment)。具有 viewer_no_comment 权限的成员只能查看共享文件,无法访问文件评论。默认值为 viewer。
add_message_as_comment布尔值否若设为 true,则自定义消息将作为评论添加到文件中。默认值为 false。

以下代码将向文件添加一个成员:

1// 定义导入库 2import fetch from 'node-fetch'; 3 4// 定义 API 密钥 5const token = '{{TOKEN}}'; 6 7// 定义端点 URL 8const endpointUrl = new URL('https://api.dropboxapi.com/2/sharing/add_file_member'); 9 10// 定义请求头参数 11const headerParameters = { 12 'Authorization': `Bearer ${token}`, 13 'Content-Type': 'application/json', 14}; 15 16// 定义请求体参数 17const bodyParameters = JSON.stringify({ 18 file: "/home/TestFolder/demo.png", 19 members: [{".tag":"email","email":"user_id@gmail.com"}], 20 custom_message: "您已被管理员添加为该文件的查看者...", 21 quiet: false, 22 access_level: {".tag":"viewer"}, 23 add_message_as_comment: false 24}); 25 26// 设置 API 调用选项 27const options = { 28 method: 'POST', 29 headers: headerParameters, 30 body: bodyParameters, 31}; 32 33// 定义 API 调用函数 34async function addMember() { 35 try { 36 const response = await fetch(endpointUrl, options); 37 38 // 自定义函数:打印 API 响应 39 printResponse(response); 40 } catch (error) { 41 // 自定义函数:打印错误信息 42 printError(error); 43 } 44} 45 46// 调用函数执行 API 调用 47addMember();

上述代码中完成的操作如下:

  • 第 2 行:从 node-fetch 导入 fetch 库。
  • 第 5 行:获取用于身份验证的 TOKEN 值。
  • 第 8 行:定义请求 URL。
  • 第 11–14 行:定义 fetch 请求的头部参数,包括授权信息和内容类型 application/json。
  • 第 17–24 行:定义 fetch 请求的请求体参数。
  • 第 27–31 行:设置 API 调用选项。
  • 第 34–44 行:创建一个用于发起 API 调用的函数。尝试获取响应并将其传递给自定义函数 printResponse;若出错则捕获异常并传递给 printError 函数。
  • 第 47 行:调用 addMember 函数以执行 API 调用。

响应

该代码将返回一个包含新增成员元数据(如其访问级别)以及调用结果状态的列表。

响应字段格式描述
member字符串新增成员的详细信息。
result字符串成员的访问级别。

列出文件成员

此端点将返回拥有共享文件访问权限的所有成员列表。/sharing/list_file_members 端点需要启用 sharing.read 权限才能执行此操作。

请求参数

以下是我们在实践代码中需要使用的部分参数:

参数名称格式是否必需描述
file字符串是获取成员列表的文件 ID。
include_inherited布尔值否指定是否包含从共享父文件夹继承访问权限的成员。默认值为 true。
limit无符号整数否每次查询最多返回的成员数量。默认值为 100。

以下代码使用 search_v2 端点获取 demo.png 的文件 ID:

1// 定义导入库 2import fetch from 'node-fetch'; 3 4// 定义 API 密钥 5const token = '{{TOKEN}}'; 6 7// 定义端点 URL 8const endpointUrl = new URL('https://api.dropboxapi.com/2/files/search_v2'); 9 10// 定义请求头参数 11const headerParameters = { 12 'Authorization': `Bearer ${token}`, 13 'Content-Type': 'application/json', 14}; 15 16// 定义请求体参数 17const bodyParameters = JSON.stringify({ 18 query: "demo", 19 options: { 20 "path": "/home/TestFolder" 21 } 22}); 23 24// 设置 API 调用选项 25const options = { 26 method: 'POST', 27 headers: headerParameters, 28 body: bodyParameters, 29}; 30 31// 定义 API 调用函数 32async function listMembers() { 33 try { 34 const response = await fetch(endpointUrl, options); 35 36 // 自定义函数:打印 API 响应 37 printResponse(response); 38 } catch (error) { 39 // 自定义函数:打印错误信息 40 printError(error); 41 } 42} 43 44// 调用函数执行 API 调用 45listMembers();

上述代码中包含以下内容:

  • 第 2 行:从 node-fetch 导入 fetch 库。
  • 第 5 行:获取用于身份验证的 TOKEN 值。
  • 第 8 行:定义请求 URL。
  • 第 11–14 行:定义 fetch 请求的头部参数。
  • 第 17–22 行:定义请求体参数。
  • 第 25–29 行:设置 API 调用选项。
  • 第 32–42 行:定义用于发起 API 调用的函数,尝试获取响应并传递给 printResponse,否则捕获错误并传递给 printError。
  • 第 45 行:调用 listMembers 函数执行 API 调用。
1// 定义导入库 2import fetch from 'node-fetch'; 3 4// 定义 API 密钥 5const token = '{{TOKEN}}'; 6 7// 定义端点 URL 8const endpointUrl = new URL('https://api.dropboxapi.com/2/sharing/list_file_members'); 9 10// 定义请求头参数 11const headerParameters = { 12 'Authorization': `Bearer ${token}`, 13 'Content-Type': 'application/json', 14}; 15 16// 定义请求体参数 17const bodyParameters = JSON.stringify({ 18 file: "{{FILE_ID}}", 19 include_inherited: true 20}); 21 22// 设置 API 调用选项 23const options = { 24 method: 'POST', 25 headers: headerParameters, 26 body: bodyParameters, 27}; 28 29// 定义 API 调用函数 30async function listMembers() { 31 try { 32 const response = await fetch(endpointUrl, options); 33 34 // 自定义函数:打印 API 响应 35 printResponse(response); 36 } catch (error) { 37 // 自定义函数:打印错误信息 38 printError(error); 39 } 40} 41 42// 调用函数执行 API 调用 43listMembers();

上述代码中完成的操作如下:

  • 第 2 行:从 node-fetch 导入 fetch 库。
  • 第 5 行:获取用于身份验证的 TOKEN 值。
  • 第 8 行:定义请求 URL。
  • 第 11–14 行:定义 fetch 请求的头部参数。
  • 第 17–20 行:定义请求体参数。
  • 第 23–27 行:设置 API 调用选项。
  • 第 30–40 行:创建用于发起 API 调用的函数,尝试获取响应并传递给 printResponse,否则捕获错误并传递给 printError。
  • 第 43 行:调用 listMembers 函数执行 API 调用。

响应

  • users 字段表示拥有共享文件访问权限的成员列表。
    • access_type 定义成员角色,如 owner、viewer、editor 或 viewer_no_comment。
    • user 包含成员账户信息,如姓名、ID、邮箱等。
    • is_inherited 表示该成员是否通过父文件夹继承访问权限,若为真则值为 true。
  • invitees 是尚未注册或未接受邀请的受邀成员列表,包含与 users 类似的字段。
  • cursor 用于分页获取更多未返回的成员。

移除文件成员

我们使用 sharing 命名空间的 /sharing/remove_file_member_2 端点从文件中移除特定成员。

请求参数

该请求包含两个必需参数。第一个是 file 参数,用于指定文件 ID;第二个是 member 参数,用于指定要移除成员的 tag 和 email。

以下为移除之前添加到 demo.png 文件中的成员所需的请求参数:

参数名称格式是否必需描述
file字符串是要移除成员的文件 ID 或路径(包含文件名)。
member开放联合类型是指定移除文件成员的方式。根据 tag 的值决定:若为 dropbox_id,需提供用户的 Dropbox ID;若为 email,则可通过邮箱地址移除成员。

以下代码将从文件中移除特定成员:

1// 定义导入库 2import fetch from 'node-fetch'; 3 4// 定义 API 密钥 5const token = '{{TOKEN}}'; 6 7// 定义端点 URL 8const endpointUrl = new URL('https://api.dropboxapi.com/2/sharing/remove_file_member_2'); 9 10// 定义请求头参数 11const headerParameters = { 12 'Authorization': `Bearer ${token}`, 13 'Content-Type': 'application/json', 14}; 15 16// 定义请求体参数 17const bodyParameters = JSON.stringify({ 18 file: "/home/TestFolder/demo.png", 19 member: {".tag":"email","email":"user_id@gmail.com"} 20}); 21 22// 设置 API 调用选项 23const options = { 24 method: 'POST', 25 headers: headerParameters, 26 body: bodyParameters, 27}; 28 29// 定义 API 调用函数 30async function removeMember() { 31 try { 32 const response = await fetch(endpointUrl, options); 33 34 // 自定义函数:打印 API 响应 35 printResponse(response); 36 } catch (error) { 37 // 自定义函数:打印错误信息 38 printError(error); 39 } 40} 41 42// 调用函数执行 API 调用 43removeMember();

上述代码中完成的操作如下:

  • 第 2 行:从 node-fetch 导入 fetch 库。
  • 第 5 行:获取用于身份验证的 TOKEN 值。
  • 第 8 行:定义请求 URL。
  • 第 11–14 行:定义 fetch 请求的头部参数。
  • 第 17–20 行:定义请求体参数。
  • 第 23–27 行:设置 API 调用选项。
  • 第 30–39 行:创建用于发起 API 调用的函数,尝试获取响应并传递给 printResponse,否则捕获错误并传递给 printError。
  • 第 42 行:调用 removeMember 函数执行 API 调用。

响应

该代码仅返回一个 tag 字段,其值为 success。

文件请求与文件目录管理

分享文件夹并添加成员