office365 - outlook.com rest api 不正确的组织者电子邮件

当用户在 outlook.com 共享日历中创建事件时,REST API 会告知日历所有者是组织者。

我在 Outlook.com 中有一个日历,我正在通过日历订阅将所有日历事件同步到我的服务器。当有事情发生时,我会收到通知,通知中有 url,我可以用它来获取新创建事件的对象。

我现在在 outlook.com 中有另一个用户,我已将我的日历共享给他。当他在那个共享日历中做某事时,我会收到通知,但我不会收到任何关于谁创建了新事件的信息。

组织者始终是我的用户,出于某种原因,事件对象名称很好,但电子邮件地址类似于 outlook-[nonsense]@outlook.com(这不是我的电子邮件地址)。我的真实电子邮件地址更像是 lehtu@outlook.com

请参阅此图片以进行说明:

响应的组织者部分:

Organizer:
 { EmailAddress:
    { Name: 'Encode Testing',
      Address: 'outlook_2FD8F7EE77CEC8B8@outlook.com' } },

应用程序授权仅由我的用户(图中名称为 Testing)进行。

这是我的证书:

this.scopes = [
    'openid',
    'offline_access',
    'https://outlook.office.com/calendars.readwrite'
];

重点是在我的帐户下有更多的日历,我会分享给其他人。但是我必须将创建事件的信息输入到我的应用程序中。

有什么想法吗?

最佳答案

预计共享日历上的事件组织者始终是该日历的所有者。本质上,Testing2 代表 Testing 创建了事件,但 Testing2 并未成为组织者。您看到的用于测试的奇怪电子邮件地址是他的基础 outlook.com 电子邮件,这是由于您使用的是自定义域而添加的。

不幸的是,今天 API 似乎并没有直接公开有关实际创建事件的人的信息。这可能是在 UserVoice 上建议的一个很好的功能.但是,您可以间接访问它。

只要 API 不直接公开属性,您就可以查看 Exchange 服务器公开的基础属性。我通常在 MS-OXPROPS 中查找它们医生。我找到了 PidTagCreatorName ,这看起来可能有助于获取您想要的数据。

您通常可以通过扩展(通过 $expand)项目的 SingleValueExtendedProperties 集合来访问这些基础属性。因此,如果您对以下内容执行 GET:

https://outlook.office.com/api/v2.0/me/events?
$expand=SingleValueExtendedProperties($filter=PropertyId eq 'String 0x3FF8')

您会看到返回的结果类似于:

{
    ...
    All the normal props you usually see
    ...
    "SingleValueExtendedProperties": [
        {
            "PropertyId": "String 0x3ff8",
            "Value": "Jason Johnston"
        }
    ]
}

https://stackoverflow.com/questions/39089878/

相关文章:

c# - 正则表达式,匹配任何未包含在

php - 使用 cakephp 2.0 在 sitemap.xml 中显示来自数据库的数据

amazon-web-services - 您如何动态授予 AWS Lambda 函数访问资源的权限

android - 在 Bundle 中传递对象 - ClassNotFoundException

apache - htaccess 不适用于本地主机

vagrant - 是否可以触发 Packer 的后处理器跳过构建步骤?

.net - 在 WPF .Net 中测量 UI 性能的正确方法

javascript - 在 Webpack 中,导出文件如何不导入它导出的所有内容?

asp.net-mvc - 如何在帐户 Controller 之外创建新的用户身份?

html - 上传多个文件或目录