如何在多个用户上创建具有相同ID的MS Graph开放式扩展?

时间:2017-05-23 14:51:51

标签: azure azure-active-directory microsoft-graph

我试图在我的AAD租户中向用户添加一些个人资料数据。使用Microsoft Graph,我可以为一个用户添加一个开放扩展。

URL (POST): https://graph.microsoft.com/v1.0/me/extensions

Body: {
    "@odata.type": "Microsoft.Graph.OpenTypeExtension",
    "extensionName": "mydev.profile",
    "value1": "1000",
    "value2": "3"
}

这有效,我可以用

更新它
PATCH https://graph.microsoft.com/v1.0/me/extensions/mydev.profile

但是,如果我尝试将相同的扩展名添加到其他用户,则会收到一条错误消息,指出该ID已被使用。

Request (POST): https://graph.microsoft.com/v1.0/users/{object-id}/extensions

Body: {
    "@odata.type": "Microsoft.Graph.OpenTypeExtension",
    "extensionName": "mydev.profile",
    "value1": "1000",
    "value2": "3"
}

Response (409 Conflict): {
  "error": {
    "code": "Request_BadRequest",
    "message": "An extension already exists with given id.",
    "innerError": {
      "request-id": "27c9c777-d4ce-4466-adce-a18505fffb30",
      "date": "2017-05-23T14:43:17"
    }
  }
}

documentation I'm reading并未说明id在任何范围内都必须是唯一的。我错过了什么吗?

(我已尝试通过Microsoft Graph Explorer和Postman进行此操作。结果相同。)

1 个答案:

答案 0 :(得分:1)

感谢您报告此事。我们将调查此错误。我们在这里发生了一些事情。我不认为在请求中指定@odata.type是必需的,但是当您添加它时,我们将id设置为与提供的extensionName相同。其次,我们还将id的范围设置为每个租户唯一(至少对于像user这样的目录资源),这是错误的。我认为这对于独特的每个对象更有意义,特别是如果您希望过滤所有具有扩展程序(公共)ID的用户。

如果您要创建具有相同extensionName的多个开放式扩展程序,则可以在未指定有效内容中的@odata.type的情况下实现。当您这样做时,我们会生成一个唯一的id。或者,您可以指定其他开放属性来标记扩展名。缺点是,在我们进行修复之前,您将无法执行上述过滤器。

当我们对此做出一些修正时,我会回复。

希望这有帮助,