Я пытаюсь создать короткий сценарий 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. Я полагаю, что владельцу этого электронного письма необходимо дать разрешение моему приложению, прежде чем я смогу начать размещать материалы в их Календаре. Как вы это делаете?