我们的情况是我们有2个用户,UserA和UserB。我想将UserB的所有文件和文件夹传输到UserA。
我们正在使用协作API来执行此任务。但是得到以下错误
{"类型":"错误""状态":404,"代码":" NOT_FOUND" " CONTEXT_INFO" {"错误":[{"理由":" INVALID_PARAMETER""名称":& #34;角色","消息":"无效的值'所有者'。 '的作用'有价值的'所有者'找不到"}]}," help_url":" http://developers.box.com/docs/#errors"," message":& #34;未找到"," request_id":" 304354248562a743910984"}
当我通过"所有者"之外的任何东西时,我得到了有效的回复。作为请求中的角色。我不知道"所有者"作用。
这是请求
POST https://api.box.com/2.0/collaborations/ HTTP/1.1
As-User: 254598270
Authorization: Bearer UPSUE228kXGuDBGzy07G5fGxIrDL1QDj
Content-Type: text/plain; charset=utf-8
Host: api.box.com
Content-Length: 108
Expect: 100-continue
Accept-Encoding: gzip, deflate
{"item":{"id":"5092905410","type":"folder"},"accessible_by":{"id":"254608030","type":"user"},"role":"owner"}
答案 0 :(得分:3)
我认为文档可能有误。考虑到协作的工作原理,在协作中指定“所有者”角色并不合理。
但是,move user's folder端点可能正是您要寻找的。它允许您将一个用户的整个根文件夹移动到另一个用户的帐户。这是一个示例cURL请求:
curl https://api.box.com/2.0/users/USER_ID/folders/FOLDER_ID \
-H "Authorization: Bearer ACCESS_TOKEN" \
-d '{"owned_by": {"id": "USER_ID"}}' \
-X PUT
请注意,目前仅支持根文件夹(文件夹ID为0)。幸运的是,它看起来像是你要移动的文件夹。
答案 1 :(得分:0)
所缺少的是,必须先将它们添加为编辑者,然后才能使其成为所有者。
如果您遵循https://developer.box.com/guides/folders/single/change-owner/
您将看到,转移所有权实际上不需要移动文件夹。这是一个非常简单的两(或三)步过程:
EDITOR
的协作者OWNER
就是这样。 (可选)您现在可以删除已从所有者降级为编辑者的原始所有者的协作。
这是我使用Python SDK的示例:
bc = box.BoxClient() # This is my own client wrapper
owner = bc.get_user(old_owner.lastname)
user_client = bc.get_user_client(owner.id) # Get a user_client for the owner
src_folder = user_client.folder(FOLDER_ID)
target = bc.get_user('new_owner.lastname')
new_collab = src_folder.collaborate(target, CollaborationRole.EDITOR)
updated_collaboration = new_collab.update_info(CollaborationRole.OWNER)
# Now we can remove the original owner as collaborator:
for collab in src_folder.get_collaborations():
target = collab.accessible_by
if target.id == owner.id:
collab.delete()