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

时间:2013-11-22 23:26:31

标签: box-api

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

使用Box API v2,根据文档here,您需要指定必须为“开放”,“公司”或“协作者”的访问参数。

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

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

有没有办法用v2执行此操作,而管理员不必告诉我们他们为我们创建的共享链接的“首选”访问级别?我正在使用Java SDK,如下所示:

BoxItemRequestObject req = BoxItemRequestObject.createSharedLinkRequestObject(BoxSharedLinkRequestObject.createSharedLinkRequestObject("open"));

BoxItem item = itemsManager.createSharedLink(<ID>, req, BoxResourceType.FILE);

谢谢,

本·吉尔伯特

Smartsheet.com

2 个答案:

答案 0 :(得分:0)

只需设置对空集{}

的访问权限即可

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

{"shared_link": {}}

答案 1 :(得分:0)

我想出了如何使这项工作。我需要在创建BoxSharedLinkRequestObject时设置null的访问权限,如下所示:**

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

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