如何在不指定共享类型的情况下使用Box Java SDK创建共享链接



在Box API v1中,可以请求为文件或文件夹创建共享链接,而不必关心需要什么类型的共享。事实上,请求特定类型的共享是不可能的——您只使用了public_share方法,并传入了目标类型(文件/文件夹)和目标ID,以及可选的共享密码。例如,在企业帐户中,如果公共链接被禁止,这可能会导致最大访问级别为"公司"或"合作者"。

根据这里的文档,对于Box API v2,您需要指定一个访问参数,该参数必须是"open"、"company"或"collaborator"。

问题是,使用错误的类型可能会导致共享失败。例如,在一个只允许合作者的文件夹/帐户中,如果我要求"打开"共享,我会收到400个错误。

我真正想要的是得到与用户点击Box网站中的"共享"链接完全相同的结果。也就是说,它应该启用文件共享,但适当地默认级别。

有没有一种方法可以用v2做到这一点,而管理员不必告诉我们他们对我们创建的共享链接的"首选"访问级别?我使用的是Java SDK,如下所示:

BoxItemRequestObject req = BoxItemRequestObject.createSharedLinkRequestObject(BoxSharedLinkRequestObject.createSharedLinkRequestObject("open"));
BoxItem item = itemsManager.createSharedLink(<ID>, req, BoxResourceType.FILE);

谢谢,

Ben Gilbert

Smartsheet.com

只需设置对空集{}的访问权限

所以你的请求看起来是这样的:

{"shared_link": {}}

我想好了如何实现这一点。创建BoxSharedLinkRequestObject时,我需要将访问权限设置为null,如下所示:**

BoxItemRequestObject req = BoxItemRequestObject.createSharedLinkRequestObject(BoxSharedLinkRequestObject.createSharedLinkRequestObject(null));

这并没有产生与推荐的完全相同的JSON(shared_link: {}),但它确实产生了明显等效的JSON:shared_link: { access: null }。我想不出任何方法来使用SDK生成一个空的shared_link对象——我要么必须有一个空shared_link(根本不起作用),要么必须有访问字段的一些值。

最新更新