【问题标题】:Microsoft graph get lists in sites returns 401Microsoft Graph 获取站点中的列表返回 401
【发布时间】:2017-06-21 21:06:42
【问题描述】:

当我尝试使用此 Microsoft Graph 查询列出共享点站点中的所有列表时,它返回一个 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"
    }
}

}

谢谢

【问题讨论】:

    标签: sharepoint office365 microsoft-graph-api


    【解决方案1】:

    通常,401 响应表示服务器验证您的 API 请求所需的信息在请求中丢失或存在但不知何故无效。我建议你:

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

    2) 如果存在,则验证失败请求中的 Authorization 标头的内容与成功的请求中的 Authorization 标头。

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


    更新(一些额外的想法)

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

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

    您应该验证您在失败请求的 Authorization 标头中指定的令牌至少具有这些范围之一(尽管正如我之前所说,如果您没有,我希望服务器返回 403' t 具有适当的访问范围)。

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

    【讨论】:

    • @Nico -- 我已经更新了我的答案以添加更多信息。你在这个问题上有什么进展吗?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多