新 OneDrive 上的复制操作 API

Copy operation on new OneDrive API

我在这个问题上纠结了一段时间。我正在尝试将位于 OneDrive 文件夹中的文件复制到同一帐户中的另一个文件夹中。 (即:从用户的根文件夹到它的子文件夹之一)。

根据 OneDrive Copy API,我需要调用此 REST API:

POST /drive/items/{item-id}/action.copy

其中 {item-id} 是我要复制的文件的 ID。对于此请求,我使用了以下内容:

{
    "parentReference": {
        "id": [destination-folder-id]
    }
}

这个 http 调用工作正常。我得到了想要的结果:

HTTP/1.1 202 Accepted
Location: https://onedrive.com/monitor/[generated-alphanumeric-characters]

当我在 Location header 关注 link 时,我得到的异步作业状态是:

{
    "operation": "ItemCopy",
    "percentageComplete": 0,
    "status": "notStarted",
    "statusDescription": "Completed 0/0 files; 0/0 bytes"
}

问题是,无论我等待并调用这个 link 多少次,它都会给出准确的响应,statusnotStarted。我还尝试使用 OneDrive's API Console 重现它,它显示了确切的行为。复制空文件夹时我没有任何问题。此问题仅发生在文件上。有谁知道为什么?我应该做些什么来开始那个异步作业?

好像没有人知道这个问题。现在,我必须使用旧的 OneDrive API(以前的 SkyDrive API)来进行复制操作,就像这个例子:

COPY https://apis.live.net/v5.0/file.a6b2a7e8f2515e5e.A6B2A7E8F2515E5E!126

Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json
{
    "destination": "folder.a6b2a7e8f2515e5e.A6B2A7E8F2515E5E!114"
}

档案后的东西。和文件夹。是用户 ID 后跟项目 ID(file id 表示项目或 folder id 表示目的地)。请注意,这仅适用于文件。不能复制文件夹。如果成功,它将 return 状态码 Created.

哦,还有......为了使用这个API,我们需要在验证我们的应用程序时在范围内有wl.skydrive_update

我不会将此答案标记为已接受的答案,因为这只是此问题的解决方法。它并没有解决真正的问题。

4 月 12 日更新: 行。根据 this bug tracking,这个 API 现在应该可以工作了(引用的评论是在 4 月 10 日发布的。所以我会把这个问题标记为已回答。