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

时间:2016-08-22 22:50:33

标签: office365 office365api outlook-restapi office365-restapi

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

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

我现在在outlook.com中有另一位用户,我已将他的日历分享给他。当他在共享日历中执行某些操作时,我会收到通知,但我不会获得有关谁创建新事件的任何信息。

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

请参阅此图片以获得澄清:

enter image description here

回应的组织者部分:

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

应用程序验证只能由我的用户进行(图中的名称为Testing)。

这是我的凭证:

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

预计共享日历上的活动组织者始终是所述日历的所有者。基本上Testing2已经代表Testing进行了创建活动,但Testing2没有成为组织者。您在测试中看到的奇怪电子邮件地址是他的基础outlook.com电子邮件,由于您使用的是自定义域名,因此会添加该电子邮件地址。

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

只要API没有直接公开属性,您就可以查看Exchange服务器公开的基础属性。我通常在MS-OXPROPS doc中查找它们。我找到了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"
        }
    ]
}