使用MSGraph发布或修补EducationClass时出错

时间:2018-06-21 09:46:06

标签: microsoft-graph microsoft-graph-edu

我正在尝试使用Microsoft Graph发布或修补教育班,但总是会出错。

请求

https://graph.microsoft.com/V1.0/education/classes
{
  "description": "Health Level 1",
  "classCode": "Health 501",
  "displayName": "Health 1",
  "externalId": "11019",
  "externalName": "Health Level 1",
  "externalSource": "sis",
  "mailNickname": "fineartschool.net"
}

响应

{
  "code": "AccessDenied",
  "message": "Required scp claim values are not provided.",
  "innerError": {
    "request-id": "e1183015-d942-491a-9949-4aa73bbef893",
    "date": "2018-06-21T08:44:35"
  }
}

“我的应用”具有创建教育课程所需的权限。 (对于测试,我的应用程序具有所有可能的应用程序和委派权限)。发布用户,组等没有问题。

App Permissions

更具体地说明所需的权限:Roster permission

在AD门户中分配权限后,我执行了以下操作:

  • 获得应用https://login.microsoftonline.com/myTenant/adminconsent?client_id=myClientID&redirect_uri=MyRedirectURI

  • 的管理员同意
  • 获取授权码https://login.microsoftonline.com/myTenant/oauth2/authorize?client_id=myClientID&response_type=code&redirect_uri=MyRedirectURI&response_mode=query&resource=https://graph.microsoft.com/

  • 获取访问令牌

一切顺利。 获得访问令牌后,我具有以下作用域:

  • .....
  • EduRoster.Read
  • EduRoster.ReadBasic
  • EduRoster.ReadWrite
  • ...

Graph文档说您需要权限Application EduRoster.ReadWrite.All

还在Graph Explorer中测试了POST和PATCH,但得到了相同的响应。

1 个答案:

答案 0 :(得分:2)

此API需要“应用程序”范围,而不是“委托”范围。如您所述,它特别需要EduRoster.ReadWrite.All范围。

应用于令牌的范围完全取决于您用来获取令牌的OAuth授权:

  • 授权代码授予=委托
  • 隐性补助=委派
  • 客户凭据授予=应用

未在访问令牌中获得此范围的原因是您使用的是授权码授予(response_type=code),这将始终导致分配委托范围。

要进行此调用,您需要使用Client Credentials grant获得令牌。

您可能还会发现这篇文章有帮助(完整披露,我是作者):Application vs Delegated Scopes