这个问题已经被问过好几次了,并且根据诸如this这样的答案,似乎API不支持这一点,直到最近才作为here,它提到了允许访问共享日历的新范围。但还是不起作用。
我已经在两个平台上测试了这一点: Azure和Microsoft
我在Azure AD中的应用程序具有所有必需的权限:
我调用Office v.1.0作为:
授权网址: type=code 令牌网址:
https://login.microsoftonline.com/common/oauth2/token
日历网址:https://outlook.office.com/api/v1.0/Me/Calendars
它只提供当前登录/授权用户创建的日历。
由于这不起作用,我尝试使用API的第2版,但得到了以下内容:
其他技术信息:相关ID: 7abf370a-d918-4514-bd74-cf5fc93fe3cf时间戳: 2016-10-31 09:32:06Z AADSTS70001:应用程序‘f 7571710-84e2-4444-8bfe-5eef92f4a46d’不支持此API版本。
所以我尝试了一个微软图形应用程序
这里的应用程序还包含所有必需的权限。
我以以下方式调用office v2.0:
授权URL: type=code&scope=%3$s 其作用域为: 私有静态$scopes =数组( 'https://outlook.office.com/calendars.read','https://outlook.office.com/calendars.readwrite','https://outlook.office.com/calendars.read.shared','https://outlook.office.com/calendars.readwrite.shared',); 令牌网址:
https://login.microsoftonline.com/common/oauth2/v2.0/token
日历网址:https://outlook.office.com/api/v2.0/Me/Calendars
再一次没有给我共享的日历。
任何帮助都是非常感谢的。
发布于 2016-11-02 06:19:28
但是,这里的关键似乎是,您期望/Me/Calendars
包含共享日历。事实并非如此。为了访问已被共享的其他人的日历,您必须通过/Users/<id>/Calendars/
URL访问。
因此,例如,如果bob@contoso.com登录,并且bill@contoso.com与他共享了他的日历,那么:
/Me/Calendars
只会在Bob的邮箱中显示日历/Users/bill@contoso.com/Calendars
将显示比尔与鲍勃共享的日历更新:我们这边似乎存在阻塞问题。我们正在努力。
发布于 2017-05-24 09:05:19
通过使用以下端点,我已经能够完成我认为您要求的事情(使用Outlook从与outlook日历共享的日历中获取事件):
.../api/v2.0/Users('PRIMARY_USER_ID')/Calendars('SHARED_CALENDAR_ID')/Events
从这个端点,您应该能够从任何与outlook/office 365帐户直接共享的日历中获取事件/信息。
api/v2.0/me
端点上找到)。我看到的所有in都以一串由破折号分隔的字母和数字的形式返回。.../api/v2.0/me/calendars/
提出请求,您可以看到每个共享日历的这些if。这将返回与您共享的每个日历、关于所有者的信息以及该日历的“ID”。如果插入这些If,并向上面的url发出请求,您应该能够从API中获得日历事件。
发布于 2017-06-25 03:07:41
更新。我找到了一个可行的解决方案。。
获取/users({id})/calendars({id})/events
获取/me/日历(‘{id}’)/events
关于您需要如何共享它,有几条规则可以在:issues#calendars找到
是另一种解决办法:
可以使用API访问组日历和组事件。可以与组织内外的任何人共享组日历。与其共享用户日历,不如创建一个组,添加您想要读写访问的任何成员。只要用户是该组的成员,添加到组日历中的任何事件都将在标准/me/events GET请求中通过。
我发现您需要授予以下权限:
祝好运!
https://stackoverflow.com/questions/40381513
复制