我正在尝试使用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"
}
}
“我的应用”具有创建教育课程所需的权限。 (对于测试,我的应用程序具有所有可能的应用程序和委派权限)。发布用户,组等没有问题。
在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/
获取访问令牌
一切顺利。 获得访问令牌后,我具有以下作用域:
Graph文档说您需要权限Application EduRoster.ReadWrite.All
还在Graph Explorer中测试了POST和PATCH,但得到了相同的响应。
答案 0 :(得分:2)
此API需要“应用程序”范围,而不是“委托”范围。如您所述,它特别需要EduRoster.ReadWrite.All
范围。
应用于令牌的范围完全取决于您用来获取令牌的OAuth授权:
未在访问令牌中获得此范围的原因是您使用的是授权码授予(response_type=code
),这将始终导致分配委托范围。
要进行此调用,您需要使用Client Credentials grant获得令牌。
您可能还会发现这篇文章有帮助(完整披露,我是作者):Application vs Delegated Scopes。