challenger128
challenger128

Reputation: 21

Microsoft Graph API Permissions

Well, I've registered a new app with following permissions enter image description here

Now then i run this code

from O365 import Account

CLIENT_ID = 'xxxx'
SECRET_ID = 'xxxx'
TENANT_ID = 'xxxx'

credentials = (CLIENT_ID, SECRET_ID)
account = Account(credentials, auth_flow_type='credentials', tenant_id=TENANT_ID)
if account.authenticate():
    print('Authenticated!')

schedule = account.schedule(resource='my_account@domain')
calendar = schedule.get_default_calendar()
events = calendar.get_events(include_recurring=False)

for event in events:
    print(event)

I catch an error

Client Error: 401 Client Error: Unauthorized for url: https://graph.microsoft.com/v1.0/users/my_account@domain/calendar | Error Message: The token contains no permissions, or permissions can not be understood.

It seems like I should provide an access or doing something in azure web interface. I have no idea what should I fix. Could tell me what should I do

Upvotes: 0

Views: 782

Answers (1)

hidebyte
hidebyte

Reputation: 64

Like John Hanley already mentioned - your Scope is missing:

E.g:

from O365 import Account

CLIENT_ID = 'xxxx'
SECRET_ID = 'xxxx'
TENANT_ID = 'xxxx'

credentials = (CLIENT_ID, SECRET_ID)

scopes = ['https://graph.microsoft.com/Calendar.ReadWrite',
          'https://graph.microsoft.com/Calendar.Read', 
          'https://graph.microsoft.com/User.Read']

account = Account(credentials, tenant_id=TENANT_ID)
if account.authenticate(scopes=scopes):
   print('Authenticated!') 

Upvotes: 1

Related Questions