站点中的Microsoft图表获取列表返回401

时间:2017-06-21 21:06:42

标签: sharepoint office365 microsoft-graph

当我尝试使用此Microsoft Graph查询列出sharepoint站点中的所有列表时,它返回401错误。但阅读清单工作正常。

{
"error": {
    "code": "unauthenticated",
    "message": "Access denied. You do not have permission to perform this action or access this resource.",
    "innerError": {
        "request-id": "6929864e-9d14-4911-9d7e-d0a29259e05f",
        "date": "2017-06-21T21:00:15"
    }
}

}

由于

2 个答案:

答案 0 :(得分:1)

通常,401响应表示服务器验证您的API请求所需的信息要么在请求中丢失,要么存在,但在某种程度上无效。我建议你:

1)验证失败的请求中是否存在授权标头。

2)如果存在,则验证失败请求中授权标头的内容是 相同 到内容成功请求中的授权标头。

如果您在两个请求中都发送完全相同的授权标头,那么我不希望服务器为一个操作返回401响应,而不是另一个操作。 (如果是权限问题 - 即,用户有权执行操作-A而不是操作-B,那么我希望服务器返回操作-B的403 Forbidden响应 - 而不是401未经授权的回复。)

更新(一些额外的想法)

看起来这两个操作都需要这两个访问范围之一:

  • Sites.Read.All
  • Sites.ReadWrite.All

您应该验证您在失败请求的Authorization标头中指定的令牌是否至少有一个这样的范围(尽管如前所述,我希望服务器能够如果您没有适当的访问范围,则返回403)。

此外,如果您在没有用户提供授权的情况下通过OAuth获取了访问令牌,那么此答案中的信息可能会有所帮助:How to use OAuth when there is no user delegation? -- Microsoft Graph API。在帖子描述的场景中,服务器返回401响应,因为开发人员没有明确获得他们试图执行的操作的管理员同意。

答案 1 :(得分:0)

你可以再试一次吗?这个(https://graph.microsoft.com/beta/sites/ {site-id} / lists)似乎现在正在运作。