无需OAuth2认证,用Java Box开发者应用下载共享文件夹文件
解决Box共享文件夹无OAuth2授权下载文件的问题
你可以使用Box Java SDK提供的共享链接认证功能实现需求,无需获取共享者的OAuth2令牌,只要共享链接设置为「拥有链接的人可访问」,就能直接访问下载文件。
实现步骤与代码示例
- 确保项目引入Box Java SDK依赖(如使用Maven,添加对应dependency)
- 通过共享链接信息初始化认证客户端,获取文件/文件夹对象后执行下载:
import com.box.sdk.BoxAPIConnection; import com.box.sdk.BoxFile; import com.box.sdk.SharedLink; import java.io.FileOutputStream; import java.io.IOException; public class BoxSharedLinkDownload { public static void main(String[] args) { // 目标文件的共享链接 String sharedLinkUrl = "https://app.box.com/s/xxxxxxxxx"; // 共享链接有密码则填写,无密码传null String sharedLinkPassword = null; // 初始化基于共享链接的认证连接 BoxAPIConnection apiConnection = new BoxAPIConnection(); apiConnection.setSharedLink(new SharedLink(sharedLinkUrl, sharedLinkPassword)); // 从共享链接中提取文件ID String fileId = new SharedLink(sharedLinkUrl).getItemID(); // 获取文件对象并下载到本地 BoxFile file = new BoxFile(apiConnection, fileId); try (FileOutputStream outputStream = new FileOutputStream("local_downloaded_file.ext")) { file.download(outputStream); System.out.println("文件下载完成"); } catch (IOException e) { e.printStackTrace(); } } }
额外说明
- 必须确保共享链接权限为「拥有链接的任何人都可以查看/下载」,若设置为「仅限邀请人员」则无法通过此方式访问
- 如果要遍历共享文件夹内所有文件,可先获取文件夹对象再递归遍历:
import com.box.sdk.BoxFolder; // ... 其他代码 ... String folderSharedLinkUrl = "https://app.box.com/s/yyyyyyyyy"; BoxFolder folder = new BoxFolder(apiConnection, new SharedLink(folderSharedLinkUrl).getItemID()); for (BoxFolder.Info itemInfo : folder) { if (itemInfo instanceof BoxFile.Info) { BoxFile file = new BoxFile(apiConnection, itemInfo.getID()); // 执行下载操作 } }
内容的提问来源于stack exchange,提问作者David Loy
相关产品推荐
相关产品推荐

