azure 在Python中阅读Outlook日历事件

uurv41yg  于 2023-06-24  发布在  Python
关注(0)|答案(2)|浏览(170)

我需要从个人Outlook日历中获取当天的事件。除了微软的教程(https://learn.microsoft.com/en-us/graph/tutorials/python)之外,我在网上几乎找不到任何可行的资源,但我不想构建Django应用程序。有人能提供其他资源吗?
另外:我见过很多ppl使用GET <url>命令调用API。我一辈子都不明白你能在哪里用这个?在使用API时,我是否错过了一些关键的东西?

rdlzhqv9

rdlzhqv91#

首先,你应该知道,如果你想调用ms graph api,你需要先获得访问令牌,并将其添加到请求头,如下面的截图。我在屏幕截图中显示的是创建日历事件,但它们是相似的。因此,您无法避免生成令牌。
然后有两种方法摆在你面前,如果你正在编写一个Web应用程序,那么你可以按照本节找到适合你的示例,如果你正在编写一个守护程序应用程序,这意味着你需要在这里使用clientcredentialflow,你可以参考本节。
无论是使用SDK还是发送http请求来调用API,都需要选择合适的流程来获取访问令牌。

jobtbby3

jobtbby32#

为此,无需通过python中的request使用Microsoft Graph API,有一个名为O365的PyPI包。
通过以下步骤,您可以轻松读取Microsoft日历:
1.安装包:pip install O365
1.在Microsoft Azure控制台中注册一个应用程序,并保留application (client) idclient secret-这个article可以帮助您。
1.检查signInAudience,它应该是AzureADandPersonalMicrosoftAccount而不是MicrosoftAzure Manifest中的PersonalMicrosoftAccount,否则,您可以编辑它。
1.接下来,你应该设置你想要的范围的委托权限,在你的例子中是Calendars.Read。以下是我在Azure中的配置快照:

现在是时候深入代码了:

from O365 import Account

CLIENT_ID = "xxx"
CLIENT_SECRET = "xxx"

credentials = (CLIENT_ID, CLIENT_SECRET)
scopes = ['Calendars.Read']
account = Account(credentials)

if not account.is_authenticated:
    account.authenticate(scopes=scopes)
    print('Authenticated!')

schedule = account.schedule()
calendar = schedule.get_default_calendar()
events = calendar.get_events(include_recurring=False) 

for event in events:
    print(event)

相关问题