Как дать разрешение приложению внутри Azure Active Directoy? - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь создать короткий сценарий python, который создает событие в моем календаре Outlook, но пока мне не повезло. Я начал с входа в систему с помощью myaddress@outlook.com в Azure и создания приложения с именем «python_app» внутри Azure Active Directory, я сгенерировал secret_id и назначил приложению кучу разрешений API. Вот и все. Но я не разрешил этому приложению получать доступ к своей электронной почте, поэтому я думаю, что это может быть моей проблемой, но я не знаю, как это сделать. Это код, который у меня есть:

import O365
from O365 import Account
from datetime import datetime

credentials = ('xxx', 'yyy')


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

schedule = account.schedule(resource='myaddress@outlook.com')

calendar = schedule.get_default_calendar()
new_event = calendar.new_event()  # creates a new unsaved event 
new_event.subject = 'Recruit George Best!'
new_event.location = 'England'


new_event.start = datetime.datetime.now()

new_event.recurrence.set_daily(1, end=dt.datetime(2020, 9, 10))
new_event.remind_before_minutes = 45

new_event.save()

Вывод, который я получаю:

Authenticated!
Client Error: 401 Client Error: Unauthorized for url: https://graph.microsoft.com/v1.0/users/myaddress@outlook.com/calendar | Error Message: The token contains no permissions, or permissions can not be understood.
Traceback (most recent call last):
  File ".\read_calendar-python3.py", line 14, in <module>
    calendar = schedule.get_default_calendar()
  File "C:\Users\kiwi\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\O365\calendar.py", line 1888, in get_default_calendar
    response = self.con.get(url)
  File "C:\Users\kiwi\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\O365\connection.py", line 778, in get
    return self.oauth_request(url, 'get', params=params, **kwargs)
  File "C:\Users\kiwi\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\O365\connection.py", line 767, in oauth_request
    return self._internal_request(self.session, url, method, **kwargs)
  File "C:\Users\kiwi\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\O365\connection.py", line 729, in _internal_request
    raise HTTPError('{} | Error Message: {}'.format(e.args[0], error_message), response=response) from None
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://graph.microsoft.com/v1.0/users/myaddress@outlook.com/calendar | Error Message: The token contains no permissions, or permissions can not be understood.

Кто-нибудь видит проблему с кодом? Что делать, если я хочу использовать код с другим адресом электронной почты? myemail2@outlook.com. Я полагаю, что владельцу этого электронного письма необходимо дать разрешение моему приложению, прежде чем я смогу начать размещать материалы в их Календаре. Как вы это делаете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...