我试图在我的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进行此操作。结果相同。)
答案 0 :(得分:1)
感谢您报告此事。我们将调查此错误。我们在这里发生了一些事情。我不认为在请求中指定@odata.type
是必需的,但是当您添加它时,我们将id
设置为与提供的extensionName
相同。其次,我们还将id
的范围设置为每个租户唯一(至少对于像user
这样的目录资源),这是错误的。我认为这对于独特的每个对象更有意义,特别是如果您希望过滤所有具有扩展程序(公共)ID的用户。
如果您要创建具有相同extensionName
的多个开放式扩展程序,则可以在未指定有效内容中的@odata.type
的情况下实现。当您这样做时,我们会生成一个唯一的id
。或者,您可以指定其他开放属性来标记扩展名。缺点是,在我们进行修复之前,您将无法执行上述过滤器。
当我们对此做出一些修正时,我会回复。
希望这有帮助,