So I’m trying to get the main calendar for a user in our domain. By default we have read permission and in the Azure app for the O365 scope i have all 4 permission that you can give:
Calendars.Read
Calendars.ReadWrite
Calendars.Read.Shared
Calendars.ReadWrite.Shared
but when i try to get the calendar for any other user than my self, the calendar array returns empty.
I’m using email to define what calendar i want to access
The build is quite simple it’s currently just an O365 Scope with ‘Get Calendars’ inside and as i said it’s working fine for my own personal calendar, it’s only when trying to access others
Hey @Jacqui_M, can you be a bit more specific as to how you give permission? As I per domain setup already have access to read any other calendar (all users on the domain have this). we have also tried to get the test user to setup a specific permission just for my user with the same result of an empty array.
@loginerror Could any of your devs on this activity pitch in here as to why this won’t work? Permission wise we have followed your setup guide on graph and rights and I still only get calendars if I try to get my own. I have even tried to set my main account as owner on a calendar on one of my secondary accounts and I still cannot get any calendars from my secondary account.
As default I’m Reviewer on any other calendar on the domain, so i can already see other accounts calendars without the need for them to share it with me. But we have tried to share and add the permission manually without any change
I was told by sysadmin that i got the following permissions on the Azure App regarding calendar:
Calendars.Read
Calendars.ReadWrite
Calendars.Read.Shared
Calendars.ReadWrite.Shared
Config of O365 scope
Get Calendar config
If i set user to the currently logged in windows user i get the calendars, if it set the user to my secondary account the returned calendar array is empty
Sysadmin reported back with a possible solution, and it worked!
• Historically, there are two ways that calendar sharing has been implemented, which, for the purpose of differentiating them, are referred to as the “old” approach and “new” approach.
• The new approach is currently available for sharing calendars with view or edit permissions, but not with delegate permissions.
• You can use the calendar REST API to view or edit shared calendars only if the calendars were shared using the new approach.
• You cannot use the calendar REST API to view or edit such calendars (or their events) if the calendars were shared using the old approach.
If a calendar was shared with view or edit permissions but using the old approach, you can now work around the error and manually upgrade the calendar sharing to use the new approach. Over time, Outlook will automatically upgrade all shared calendars to use the new approach, including calendars shared with delegate permissions.
To manually upgrade a shared calendar to use the new approach, follow these steps: 1. The recipient removes the calendar that was previously shared to them. 2. The calendar owner re-shares the calendar in Outlook on the web, Outlook on iOS, or Outlook on Android. 3. The recipient re-accepts the shared calendar using Outlook on the web. (It will be possible to use other Outlook clients soon.) 4. The recipient verifies that the calendar has been re-shared successfully using the new approach by being able to view the shared calendar in Outlook on iOS or Outlook on Android.
So after i removed the shared calendar that was shared using the old method, then reshared and accepted it using web instead of the Outlook client it all worked fine.
So now it’s just a question of waiting on MS to fix this massive issue