Microsoft Graph List outlookTask 不返回不可变 ID,即使它在 header 中是首选

Microsoft Graph List outlookTask not returning immutable ID even if it's in preferred in header

所以在文档中,它说如果你想获得具有不可变 ID 的任务而不是普通的任务,只需添加一个 header 'Prefer: IdType="ImmutableId"'。我已经做到了,但它仍然 returns 具有正常 ID 的任务。 当我尝试使用 outlook 事件以及尝试通过 ID 获取 outlook 任务(获取单个任务而不是列出所有任务)时,它工作正常。但是,一旦我尝试使用不可变 id 获取所有任务,它就不起作用。它没有说任何错误它只是 returns 数据但具有正常的 id。

此外,我知道 outlook 任务 API 正在被弃用,但待办事项列表 API 现在不会削减它,我已经尝试过 - 无法检索任何形式的不可变 ID,只是普通 ID。

这是我用来在 NodeJS 中检索所有任务(列出所有任务)的代码:

      let response = await client
        .api('/me/outlook/tasks?$top=25000')
        .header("Prefer", "IdType=\"ImmutableId\"")
        .header('Prefer', `outlook.timezone="${timeZone}"`)
        .version('beta')
        .get();

这很奇怪,因为当尝试通过 ID 获取一项特定任务并设置首选 ID 类型 header 时,它起作用了。

不管怎样,请求是这样的:

列出展望任务(获取所有展望任务)

GET https://graph.microsoft.com/beta/me/outlook/tasks

通过 ID 获取一项特定任务

GET /me/outlook/tasks/{id}

HEADER 用于获取不可变 ID 而不是普通 ID

Prefer: IdType="ImmutableId"

可能有帮助

这是我用来检索具有不可变 ID 的所有事件的代码(这与任务相比有效)

let response = await client.
    api('/me/calendar/events?$top=25000')
    .header('Prefer', `outlook.timezone="${timeZone}"`)
    .header("Prefer", "IdType='ImmutableId'")
    .get();

MS Graph official documentation: How to retrieve a list of outlookTasks

MS Graph official documentation: outlookTask resource type

MS Graph official documentation: event resource type

MS Graph official documentation: Get immutable identifiers for Outlook resources

好的,所以我找到了解决方案,但它太荒谬了。如果任何 MS Graph SDK 开发人员看到此问题,请修复它。

而不是这个:

  let response = await client
    .api('/me/outlook/tasks?$top=25000')
    .header("Prefer", "IdType=\"ImmutableId\"")
    .header('Prefer', `outlook.timezone="${timeZone}"`)
    .version('beta')
    .get();

您必须这样做:

  let response = await client
    .api('/me/outlook/tasks?$top=25000')
    .header("Prefer", `IdType="ImmutableId", outlook.timezone="${timeZone}"`)
    .version('beta')
    .get();

我想设置第二个 Prefer header 会覆盖第一个,因此只发送第二个。不幸的是,我在通过 OpenTypeExtension 实施解决方案后立即发现了这一点。