当我尝试使用此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"
}
}
}
由于
答案 0 :(得分:1)
通常,401响应表示服务器验证您的API请求所需的信息要么在请求中丢失,要么存在,但在某种程度上无效。我建议你:
1)验证失败的请求中是否存在授权标头。
2)如果存在,则验证失败请求中授权标头的内容是 相同 到内容成功请求中的授权标头。
如果您在两个请求中都发送完全相同的授权标头,那么我不希望服务器为一个操作返回401响应,而不是另一个操作。 (如果是权限问题 - 即,用户有权执行操作-A而不是操作-B,那么我希望服务器返回操作-B的403 Forbidden响应 - 而不是401未经授权的回复。)
更新(一些额外的想法)
看起来这两个操作都需要这两个访问范围之一:
您应该验证您在失败请求的Authorization
标头中指定的令牌是否至少有一个这样的范围(尽管如前所述,我希望服务器能够如果您没有适当的访问范围,则返回403)。
此外,如果您在没有用户提供授权的情况下通过OAuth获取了访问令牌,那么此答案中的信息可能会有所帮助:How to use OAuth when there is no user delegation? -- Microsoft Graph API。在帖子描述的场景中,服务器返回401响应,因为开发人员没有明确获得他们试图执行的操作的管理员同意。
答案 1 :(得分:0)