我正在构建一个使用Microsoft Graph API的内部 Session 室应用程序,我想使用架构扩展来扩展Event对象 .
文档:
但是,当运行查询以注册新的架构扩展时,我收到此HTTP响应:
{
"url": "https://graph.microsoft.com/beta/schemaExtensions",
"status": "403 Forbidden",
"headers": {
"request-id": "e1e36210-6c4c-4ed8-afb1-c9ee6f6362ed",
"client-request-id": "e1e36210-6c4c-4ed8-afb1-c9ee6f6362ed",
"x-ms-ags-diagnostic": "{\"ServerInfo\":{\"DataCenter\":\"North Europe\",\"Slice\":\"SliceA\",\"ScaleUnit\":\"001\",\"Host\":\"AGSFE_IN_2\",\"ADSiteName\":\"DUB\"}}",
"duration": "742.4624"
},
"body": {
"error": {
"code": "Authorization_RequestDenied",
"message": "Insufficient privileges to complete the operation.",
"innerError": {
"request-id": "e1e36210-6c4c-4ed8-afb1-c9ee6f6362ed",
"date": "2017-05-10T10:05:37"
}
}
}
}
我可以确认我的应用程序具有 Directory.AccessAsUser.All
的先决条件范围权限,并且自添加此权限以来已超过16小时 . 我也有经过验证的域名,因此根据文档参考,命名空间应该没问题 .
我在代码中的API查询:
Outlook.test({
version: 'beta',
resource: 'schemaExtensions',
method: 'POST',
body: {
id: 'thehivegroup_beethere',
description: 'Extension for event presence status',
targetTypes: [ 'Event' ],
properties: [
{ name: 'checkIn', type: 'String' },
{ name: 'checkOut', type: 'String' }
]
}
})
.then(result => console.log(result), err => console.error(err))
这导致POST在主体中编码的JSON和带有授权令牌的头文件到URL https://graph.microsoft.com/beta/schemaExtensions
.
我尝试了不同的ID,例如 beethere
,导致命名空间错误,所以我知道这应该工作正常 .
我没有其他范围权限,我需要在这里启用 . 这个错误对我来说太模糊了,无法确定哪些特权不足 .
EDIT: 已在Graph Explorer中作为租户中的管理员手动运行查询,添加了API所需的范围权限以及一些额外的权限,但是Schema Extensions的注册查询仍然不起作用,并显示相同的错误消息申请收到 . 所以它绝对不是我的代码中的问题,而是Microsoft Graph API . 是否有联系方式或方式要求微软调查此问题?
2 回答
Directory.AccessAsUser.All仅是委派权限(必须委派它,因为它授予对登录用户的访问权限对基于目录的API的访问权限) . 它不会显示在角色声明中,因为它不是应用程序权限 .
据我所知,正确的是,您无法使用应用程序流(客户端凭据)来创建架构扩展,并且您需要使用“代码授权”流程 . 如果这是一项要求,请告诉我们 . 此外,我们很想知道您是否希望在应用程序注册中看到架构定义注册的体验...
此外,您当前无法通过Graph Explorer创建架构扩展定义(或管理它) . 要创建定义,您必须是管理员或创建扩展定义的应用程序的所有者,并且创建请求也必须来自该应用程序(不能是图形浏览器) . 我们可以考虑放松这个最后的约束 .
如果你想看到它的代码片段's available here (although it'是一个UWP c#app,而不是JS):https://github.com/microsoftgraph/uwp-csharp-snippets-rest-sample .
架构扩展现在也是GA,可在v1.0 endpoints 中使用 .
希望这可以帮助,
创建REST的这种架构扩展适用于我 . 请确保令牌包含
Directory.AccessAsUser.All
权限 . 您可以解析令牌,从此site检查其中的scp
声明 .