使用OneDrive for Business API以编程方式下载共享文件

时间:2016-03-05 20:38:36

标签: azure office365 onedrive

我有一个场景,userA在OneDrive for Business上与userB共享一个文件。他们都属于同一个Office365租户。

有没有办法使用userB身份(OAuth访问令牌)以编程方式检索共享文件内容?我尝试过使用适用于userA的2.0 API语法,但是在尝试使用userB访问令牌执行此请求时遇到401错误,即使文件是与userB共享的。

https://{tenantid}-my.sharepoint.com/_api/v2.0/drives/{driveId}/items/{itemId}/

或许有一种方法可以使用Azure AD应用程序委派的权限代表其拥有driveId和itemId的所有者访问此文件?

2 个答案:

答案 0 :(得分:1)

据我所知,此功能尚不支持。

您可以在UserVoice上申请此功能。

答案 1 :(得分:0)

至于2016年3月,我能够以编程方式从OneDrive for Business检索共享文件内容的唯一方法是:

  1. 使用FullControl权限为整个租户创建SharePoint Provider托管插件
  2. 在https:// {tenantid} -my.sharepoint.com/_layouts/15/AppRegNew.aspx
  3. 下注册应用程序
  4. 在SharePoint Online上创建应用程序目录并将应用程序发布到目录
  5. 在租户
  6. 中的至少一个SharePoint网站集上安装应用
  7. 使用ClientSecret和ClientId执行http://blogs.msdn.com/b/vesku/archive/2015/01/05/customizing-onedrive-for-business-sites-with-app-model.aspx

    中的以下代码

    Uri url = new Uri("https://{tenantid}-my.sharepoint.com/personal/{user}"); string realm = TokenHelper.GetRealmFromTargetUrl(url); var token = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal,url.Authority, realm).AccessToken;

  8. 令牌变量包含可在OneDrive for Business API请求中用作承载令牌的AccessToken(例如,从其他用户获取文件' OneDrives')。
  9. https://{tenantid}-my.sharepoint.com/_api/v2.0/drives/{driveId}/items/{itemId}/