scp 或角色声明需要出现在令牌中

use*_*749 5 onenote microsoft-graph-api

我正在尝试构建一个应用程序,该应用程序使用 Microsoft Graph 自动创建和读取存储在 SharePoint 365 中的 OneNotes 中的页面。

只要登录,我就可以使用 Graph Explorer 成功执行此操作,但无法使用 Postman 中的不记名令牌使其工作

我收到的错误是: 令牌中需要存在 scp 或角色声明

我使用以下命令成功获取了访问令牌:

https://login.microsoftonline.com/common/oauth2/v2.0/token
Run Code Online (Sandbox Code Playgroud)

并传入 grant_type、client_id、client_secret、code、redirect_uri 和scope

然后我执行以下调用,并将不记名令牌包含在标头中:

https://graph.microsoft.com/v1.0/sites
Run Code Online (Sandbox Code Playgroud)

返回以下内容:

{
    "error": {
        "code": "AccessDenied",
        "message": "Either scp or roles claim need to be present in the token.",
        "innerError": {
            "request-id": "fa442c72-4ffe-493b-a33a-8e9e78c94f09",
            "date": "2018-01-19T09:56:34"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我已如下设置图形权限。我还尝试启用通过图形权限图像配置的所有 Notes 权限,结果相同

我发现一篇文章说检查http://jwt.calebb.net/令牌中返回的内容,我发现它不包含任何角色,所以我想知道这是否是问题所在。

小智 1

您提到的“ https://graph.microsoft.com/v1.0/sites ”调用无效。除了 Notes.ReadWrite 之外,对 ~/sites/... 路由的请求可能还需要其他权限。

建议遵循以下参考文献中提到的步骤:

  1. https://developer.microsoft.com/en-us/graph/docs/concepts/permissions_reference
  2. https://developer.microsoft.com/en-us/graph/docs/concepts/auth_v2_user
  3. https://developer.microsoft.com/en-us/graph/docs/concepts/auth_v2_service