【问题标题】:Can't create an event with extended data无法使用扩展数据创建事件
【发布时间】:2021-01-07 14:47:31
【问题描述】:

我正在尝试使用 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",
      "timeZone": "Eastern Standard Time"
  },
  "attendees": [],
  "extendedData": {
      "courseId": "11",
      "materialId": "22",
      "courseType": "video"
  }
}

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

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

PATCH https://graph.microsoft.com/v1.0/me/calendars/{calendar-group-id}/events/{event-id}
    
    {
      "extendedData": {
          "courseId": "11",
          "materialId": "22",
          "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 浏览器时,我能够成功。

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

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

【问题讨论】:

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


    【解决方案1】:

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

    当你使用POST https://graph.microsoft.com/v1.0/schemaExtensions为Event类型创建扩展名时,会加上真实的名字前缀。

    像这样:

    并基于 Microsoft Graph 的 known issue

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

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

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

    【讨论】:

    • 嗨@Allen Wu。实际上我将模式扩展命名为contoso_extendedData。你知道它是{我的实际域名}_{schemaName}。所以如果我请求GET /schemaExtensions/contoso_extendedData,那么它会响应正确的扩展名。
    • 即使我成功地使用扩展数据创建事件,我似乎也无法将$filter 用于扩展属性,对吧?使用我的 Graph API 引用 this
    • 您可以在 Graph Explorer 中修补事件,但不能在 Postman 中修补?使用完全相同的请求?
    • @hotcakedev 对不起,忘了@你:(。你能回答上面的问题吗?
    • 是的,正确的。在 Graph 资源管理器中授予权限后,使用架构扩展修补事件没有错误。但是在修补之后,我无法使用架构扩展获取事件。
    猜你喜欢
    • 2018-02-27
    • 2020-06-25
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多