Microsoft Graph,注册架构扩展
Microsoft Graph, Registering a Schema Extension
我正在构建一个使用 Microsoft Graph API 的内部会议室应用程序,我想使用架构扩展来扩展事件 objects。
文档:
然而,当 运行查询注册新的模式扩展时,我收到了这个 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 在 body 中编码,headers 带有 URL https://graph.microsoft.com/beta/schemaExtensions
的授权令牌.
我尝试了不同的 ID,例如 beethere
,这导致了命名空间错误,所以我知道这应该可以正常工作。
据我所知,没有其他需要在此处启用的范围权限。这个错误太模糊了,我无法弄清楚什么权限在这里不够。
编辑:作为租户中的管理员在Graph Explorer中手动运行查询,添加了[=47]所需的范围权限=] 和一些额外的以防万一,但是架构扩展注册的查询仍然不起作用,错误消息与应用程序收到的错误消息相同。所以肯定不是我的代码有问题,而是Microsoft Graph API。是否有联系人或方式要求微软调查此问题?
这个创建 REST 的模式扩展对我来说效果很好。请确保令牌包含 Directory.AccessAsUser.All
权限。您可以从 site.
解析令牌检查其中的 scp
声明
Directory.AccessAsUser.All 只是一个委托权限(它必须被委托,因为它授予对基于目录的 API 的访问权限作为登录用户的访问权限)。它没有出现在角色声明中,因为它不是应用程序权限。
据我所知,您不能使用应用程序流程(客户端凭据)创建架构扩展,您需要使用 "code authorization" 流程。如果这是一项要求,请告诉我们。此外,我们很想知道您是否希望在应用程序注册过程中体验架构定义注册...
此外,您当前无法通过 Graph Explorer 创建架构扩展定义(或管理它)。要创建定义,您必须是创建扩展定义的应用程序的管理员或所有者,并且创建请求也必须来自该应用程序(不能是图形浏览器)。我们可能会考虑放宽这最后一个限制条件。
如果您想查看此代码片段,可在此处获取(尽管它是 UWP c# 应用程序,而非 JS):https://github.com/microsoftgraph/uwp-csharp-snippets-rest-sample.
架构扩展现已正式发布,可在 v1.0 端点中使用。
希望这对您有所帮助,
Graph Explorer 能够添加扩展。
您需要在您的租户中创建一个应用程序,并将负载中的所有者设置为您的应用程序的客户端 ID。
我正在构建一个使用 Microsoft Graph API 的内部会议室应用程序,我想使用架构扩展来扩展事件 objects。
文档:
然而,当 运行查询注册新的模式扩展时,我收到了这个 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 在 body 中编码,headers 带有 URL https://graph.microsoft.com/beta/schemaExtensions
的授权令牌.
我尝试了不同的 ID,例如 beethere
,这导致了命名空间错误,所以我知道这应该可以正常工作。
据我所知,没有其他需要在此处启用的范围权限。这个错误太模糊了,我无法弄清楚什么权限在这里不够。
编辑:作为租户中的管理员在Graph Explorer中手动运行查询,添加了[=47]所需的范围权限=] 和一些额外的以防万一,但是架构扩展注册的查询仍然不起作用,错误消息与应用程序收到的错误消息相同。所以肯定不是我的代码有问题,而是Microsoft Graph API。是否有联系人或方式要求微软调查此问题?
这个创建 REST 的模式扩展对我来说效果很好。请确保令牌包含 Directory.AccessAsUser.All
权限。您可以从 site.
scp
声明
Directory.AccessAsUser.All 只是一个委托权限(它必须被委托,因为它授予对基于目录的 API 的访问权限作为登录用户的访问权限)。它没有出现在角色声明中,因为它不是应用程序权限。
据我所知,您不能使用应用程序流程(客户端凭据)创建架构扩展,您需要使用 "code authorization" 流程。如果这是一项要求,请告诉我们。此外,我们很想知道您是否希望在应用程序注册过程中体验架构定义注册...
此外,您当前无法通过 Graph Explorer 创建架构扩展定义(或管理它)。要创建定义,您必须是创建扩展定义的应用程序的管理员或所有者,并且创建请求也必须来自该应用程序(不能是图形浏览器)。我们可能会考虑放宽这最后一个限制条件。
如果您想查看此代码片段,可在此处获取(尽管它是 UWP c# 应用程序,而非 JS):https://github.com/microsoftgraph/uwp-csharp-snippets-rest-sample.
架构扩展现已正式发布,可在 v1.0 端点中使用。
希望这对您有所帮助,
Graph Explorer 能够添加扩展。 您需要在您的租户中创建一个应用程序,并将负载中的所有者设置为您的应用程序的客户端 ID。