在OneDrive中检索最近文件的WebUrls

时间:2016-05-22 08:23:26

标签: onedrive microsoft-graph

我正在使用以下Graph API调用从OneDrive for Business检索我最近的文件;

https://graph.microsoft.com/v1.0/me/drive/recent

在响应中,driveitem对象比模式建议的更稀疏;

screenshot of JSON OneDrive response

具体来说,它缺少webUrl属性。

如果我尝试按如下方式明确请求该属性;

https://graph.microsoft.com/v1.0/me/drive/recent?select=webUrl

然后我得到以下回复;

{  
   "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#Collection(driveItem)",
   "value":[  
      {  
         "@odata.type":"#microsoft.graph.driveItem"
      },
      {  
         "@odata.type":"#microsoft.graph.driveItem"
      },
      {  
         "@odata.type":"#microsoft.graph.driveItem"
      },
      {  
         "@odata.type":"#microsoft.graph.driveItem"
      },
      {  
         "@odata.type":"#microsoft.graph.driveItem"
      }
   ]
}

如何从Graph API获取此数据?我已经尝试过后续调用直接使用此调用来获取项目(根据documentation);

https://graph.microsoft.com/v1.0/drives/<remoteItem.driveId>/items/<id>

然而,这似乎总是失败;

{
  "error": {
    "code": "itemNotFound",
    "message": "The resource could not be found.",
    "innerError": {
      "request-id": "a86bdc25-771b-4b90-9c17-942e05bd9ed3",
      "date": "2016-05-22T08:21:57"
    }
  }
}

关于Azure Active Directory权限,我注册了一个Native Client应用程序,并且我已经给它所有 Microsoft Graph API委派权限(所有40个)。我知道Overkill,但我只是想让这个工作先行,然后将逐个删除权限,直到我得到必要的权限。

1 个答案:

答案 0 :(得分:0)

您需要添加&#34; Files.Read.All&#34;,&#34; Sites.Read.All&#34;范围,你可以在azure portal中找到它,&#34;读取用户可以访问的所有文件&#34;。

enter image description here

通过这种方式,承载令牌转换为 enter image description here

没有它,承载令牌转换为 enter image description here

我有同样的&#34; itemNotFound&#34;错误&#34;读取用户可以访问的所有文件&#34;没有检查,但检查成功。