使用microsoft graph api时找不到404文件错误

时间:2016-07-07 03:46:08

标签: microsoft-graph

使用通过open id connect protocol获取的访问令牌调用图api,https://graph.microsoft.com/v1.0/me/drive/root:/foldername时出现以下错误,但是如果我使用相同的令牌来获取https://graph.microsoft.com/v1.0/me API则可以使用,并且我正在搜索的文件夹确实存在于一个驱动器上用于商务,但我仍然收到此错误,当我运行相同的代码一段时间后,我发现它工作正常。可能是什么问题。即使对于这个api https://graph.microsoft.com/v1.0/me/drive/root/children我也会遇到以下错误。

    {
  "error": {
    "code": "UnknownError",
    "message": "404 FILE NOT FOUND",
    "innerError": {
      "request-id": "d7cdf434-ead1-445d-b2be-f269a82027eb",
      "date": "2016-07-07T03:38:47"
    }
  }
}

2 个答案:

答案 0 :(得分:1)

如果您最终使用仅限app授权:

正如this answer中所述,目前不支持通过Microsoft Graph API访问OneDrive for Business的应用程序授权,并且会抛出404 FILE NOT FOUND个例外。

为了解决这个问题,我使用password grant_type流来请求令牌:

POST https://login.microsoftonline.com/{tenantId}.onmicrosoft.com/oauth2/token
Content-Type: application/x-www-form-urlencoded

grant_type=password
&username=<username>
&password=<password>
&client_id=<clientId>
&client_secret=<clientSecret>
&resource=https://graph.microsoft.com

答案 1 :(得分:0)

当用户没有Office 365 / OneDrive或没有Office 365但未初始化OneDrive(即导航到https://[domain]-my.sharepoint.com/personal/)时,会发生“404 FILE NOT FOUND”错误。

用户获得O365 / OneDrive并对其进行初始化后,您应该能够成功查询https://graph.microsoft.com/v1.0/me/drive/root/children

您还应该能够查询https://graph.microsoft.com/v1.0/me/drive/root:/foldername

如果您确实遇到了找不到文件夹的合法案例,则会收到以下错误消息:

{
    "error": {
        "code": "itemNotFound",
        "message": "The resource could not be found.",
        "innerError": {
            "request-id": "1ce2bd8d-a88f-42ae-affd-ee90f3c1d4fb",
            "date": "2016-07-11T03:17:25"
        }
    }
}