无法创建具有扩展数据的事件

问题描述

我正在尝试使用 Microsoft Graph API 创建带有扩展数据的日历事件。(实际上,我正在尝试将现有的开放扩展转换为架构扩展,因为我无法过滤开放扩展的非 id 扩展值.)

在我尝试之前,我已经成功创建了 my schema extension 并使用架构扩展创建日历事件响应错误代码“BadRequest”和消息“请求必须只包含扩展更改”。

我尝试按照 doc 执行此操作。

POST https://graph.microsoft.com/v1.0/me/calendars/{calendar-group-id}/events

{
  "subject": "schema extension test","body": {
    "contentType": "HTML","content": "schema extension test"
  },"start": {
      "dateTime": "2021-01-22T12:00:00","timeZone": "Eastern Standard Time"
  },"end": {
      "dateTime": "2021-01-23T14:00:00","attendees": [],"extendedData": {
      "courseId": "11","materialId": "22","courseType": "video"
  }
}

response: 
{
    "error": {
        "code": "BadRequest","message": "Requests must contain extension changes exclusively.","innerError": {
            ...
        }
    }
}

没有extendedData,创建事件响应成功,创建事件后,如果我patch只有extendedData的事件,它响应错误“A type named 'Microsoft.模型无法解析 OutlookServices.OpenTypeExtension'。当模型可用时,每个类型名称都必须解析为有效类型。

PATCH https://graph.microsoft.com/v1.0/me/calendars/{calendar-group-id}/events/{event-id}
    
    {
      "extendedData": {
          "courseId": "11","courseType": "video"
      }
    }

response:
{
    "error": {
        "code": "RequestBodyRead","message": "A type named 'Microsoft.OutlookServices.OpenTypeExtension' Could not be resolved by the model. When a model is available,each type name must resolve to a valid type.","innerError": {
            ...
        }
    }
}

当我通过同意 Calendars.Read 许可在登录用户的情况下使用 Graph API Explorer 时,我能够成功。

但是如果我在邮递员那里尝试同样的事情,它就行不通了。

我已经在 Azure 中授予了所有日历权限,包括委派和应用程序权限。

enter image description here

解决方法

这是因为您的架构扩展名不是 extendedData

当您使用 POST https://graph.microsoft.com/v1.0/schemaExtensions 为事件类型创建扩展时,真实名称将带有前缀。

像这样:

enter image description here

并基于 Microsoft Graph 的 known issue

您不能在与操作相同的操作中指定架构扩展 创建联系人、事件、消息或帖子的实例。你必须 首先创建资源实例,然后对其进行 PATCH 添加架构扩展和自定义数据的实例。

所以我们需要先创建事件,然后再更新。

更新事件时,需要指定真实的扩展名:

enter image description here