Microsoft图形中,注册架构扩展



我正在构建一个使用 Microsoft 图形 API 的内部会议室应用程序,我想使用架构扩展扩展事件对象。

文档:

  • 接口参考
  • 教程示例

但是,当运行查询以注册新的架构扩展时,我收到此 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 编码在正文中,标头带有 URLhttps://graph.microsoft.com/beta/schemaExtensions的授权令牌。

我尝试了不同的ID,例如beethere,这导致了命名空间错误,所以我知道这应该可以正常工作。

我知道没有其他范围权限需要在此处启用。这个错误太模糊了,我无法弄清楚这里哪些特权不足。


编辑:在租户中以管理员身份在 Graph 资源管理器中手动运行查询,添加了 API 所需的范围权限和一些额外的权限以防万一,但用于注册架构扩展的查询仍然不起作用,与应用程序收到的错误消息相同。所以这在我的代码中绝对不是问题,而是Microsoft图形 API。是否有联系或方法要求微软调查该问题?

Directory.AccessAsUser.All 仅是委派权限(必须委派,因为它授予对基于目录的 API 的访问权限作为登录用户的访问权限)。 它不会显示在角色声明中,因为它不是应用程序权限。

据我所知,正确的是,您不能使用应用程序流(客户端凭据)来创建架构扩展,并且需要使用"代码授权"流。 如果这是要求,请告诉我们。 此外,我们很想知道你是否希望看到架构定义注册作为应用程序注册一部分的体验...

此外,当前无法通过 Graph 资源管理器创建架构扩展定义(或对其进行管理)。若要创建定义,必须是创建扩展定义的应用的管理员或所有者,并且创建请求还必须来自该应用程序(不能是图形资源管理器)。 我们可以考虑放宽这最后一个限制。

如果要查看此代码片段,可在此处找到(尽管它是 UWP c# 应用,而不是 JS):https://github.com/microsoftgraph/uwp-csharp-snippets-rest-sample。

此外,架构扩展现已正式发布,并在 v1.0 终结点中可用。

希望这有帮助,

Graph Explorer 能够添加扩展。 需要在租户中创建应用,并将有效负载中的所有者设置为应用的客户端 ID。

更多关于这个

这个创建 REST 的架构扩展对我来说效果很好。请确保令牌包含Directory.AccessAsUser.All权限。您可以从此站点解析令牌检查其中的scp声明。

最新更新