当用户在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'
];
要点是我的帐户下有更多日历,我会将其分享给其他人。但我必须在我的应用程序中获取正在创建事件的信息。
有什么想法吗?
答案 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"
}
]
}