This question has been asked several times and as per answers such as this it seems the API didn't support this then until recently as here which mentions that there are new scopes which allow accessing the shared calendars. But it still does not work.
I have tested this on two platforms: Azure and Microsoft Graph
My application in Azure AD has all the required permissions:
I make a call to Office API v.1.0 as:
Authorise URL:
https://login.microsoftonline.com/common/oauth2/authorize?client_id=%1$s&redirect_uri=%2$s&response_type=code
Token URL:
https://login.microsoftonline.com/common/oauth2/token
Calendars URL:
https://outlook.office.com/api/v1.0/Me/Calendars
It only gives me the calendar created by the current logged-in/authorising user.
Since this didn't work, I tried with the version 2 of the API but I got the following:
Additional technical information: Correlation ID: 7abf370a-d918-4514-bd74-cf5fc93fe3cf Timestamp: 2016-10-31 09:32:06Z AADSTS70001: Application 'f7571710-84e2-4444-8bfe-5eef92f4a46d' is not supported for this API version.
So I tried with a Microsoft Graph Application
My application here also contains all the required permissions.
I make call to the office API v2.0 as:
Authorize URL:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=%1$s&redirect_uri=%2$s&response_type=code&scope=%3$s
Where scopes are:
private static $scopes = array( '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', );
Token URL:
https://login.microsoftonline.com/common/oauth2/v2.0/token
Calendars URL:
https://outlook.office.com/api/v2.0/Me/Calendars
Again does not give me the shared calendars.
Any help is appreciated.
A lot of stuff going on here :) However it seems the crux here is that you're expecting /Me/Calendars
to include shared calendars. It does not. In order to access someone else's calendar that has been shared, you must access via the /Users/<id>/Calendars/
URL.
So for example if [email protected] logs in, and [email protected] has shared his calendar with him, then:
/Me/Calendars
would ONLY show calendars in Bob's mailbox/Users/[email protected]/Calendars
would show calendars Bill has shared with BobUpdate: It seems there's a blocking issue on our side. We're working on it.