我通过哪个 API 在 SharePoint 访问 OneDrive

Through which API do I access OneDrive at SharePoint

我有一个帐户 username@someone.onmicrosoft.com
当我使用此 link https://onedrive.live.com/about/en-us/ 使用此帐户登录 OneDrive 时,我被重定向到此 link(为清楚起见添加了换行符)

https://someone-my.sharepoint.com/
personal/itsupport_company_com
/_layouts/15
/onedrive.aspx?
FolderCTID=0x012000908740EE6082C74E82DD6BBFB737D5D5
&id=%2Fpersonal%2Fitsupport%5Fcompany%5Fcom%2FDocuments%2FReportsFolder

问题1:我可以从url中提取一些有用的东西吗(personalitsupport_company_com代表什么?)?

我可以在网络上看到文件和文件夹 UI,目前一切正常。

现在我想使用 REST 从 OneDrive 下载一些文件 API。

现在,我正在尝试使用图表 API。 我有一个已注册的应用程序,我可以获得具有正确权限的 access_token(已在 http://jwt.calebb.net/ 中检查)(权限为 Files.Read.All Sites.Read.All User.Read),我可以发出请求(例如 /me 端点returns 正确信息。

到目前为止一切顺利。

现在我尝试了 GET /v1.0/sites 端点(according to this,它产生了这个响应:

{
  "error": {
    "code": "invalidRequest",
    "message": "Cannot enumerate sites",
    "innerError": {
      "request-id": "0d449eaf-21b8-4c9d-a372-7e9827e1ef19",
      "date": "2017-08-11T09:37:01"
    }
  }
}

所以我无法让我的 site_id(不管那是什么意思)获得关联的驱动器。

接下来,我尝试请求此端点 GET /v1.0/me/drive,但无济于事

{
  "error": {
    "code": "ResourceNotFound",
    "message": "User's mysite not found.",
    "innerError": {
      "request-id": "526c5bb3-23c0-4a85-8295-195b5e2d316c",
      "date": "2017-08-11T09:39:56"
    }
  }
}

问题2:为什么我无法访问资源?我的权限有问题吗?是否有完全不同的 api 来访问 onedrive/sharepoint?

我有一种模糊的感觉,没有与我的帐户关联的驱动器,而且我在 UI 中看到的文件夹是一个共享文件夹。我可以通过 API 访问它吗?

哇,我明白了。我不明白一切,但这里是碎片。希望有人会发现它有用。

答案是,您可以使用图表 API 访问 OneDrive/Sharepoint 个驱动器。

就我而言,问题是我尝试访问的驱动器不是我的驱动器,而是绑定到另一个帐户。我可能有一些非常没有特权的帐户。

最后,查询此 url 有效(在 header 中正确设置了 Bearer 访问令牌)

https://graph.microsoft.com/v1.0/users/itsupport@company.com/drive/root:/RootFolderName:/children

我从网上得到了用户名url

https://someone-my.sharepoint.com/
personal
/itsupport_company_com     #<--- this is the drive owner
/_layouts/15
/onedrive.aspx?
FolderCTID=0x012000908740EE6082C74E82DD6BBFB737D5D5
&id=%2Fpersonal%2Fitsupport%5Fcompany%5Fcom%2FDocuments%2FReportsFolder