如何使用cron作业将事件插入谷歌日历?

2024-04-24 10:04:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个Python脚本,它允许我从外部连接的源中检索日历事件,并借助Google日历的API将它们插入到我的Google日历中。当我从命令行执行脚本时,它可以在本地工作,但是我想让它自动发生,以便外部添加的事件自动在我的Google日历中弹出

看来cron作业是实现这一点的最佳方式,考虑到我使用了googlecalendar的API,我认为将云函数与云调度器结合使用可能会有所帮助。然而,我真的不知道从哪里开始,这是否可能,因为访问API需要OAuth与Google一起访问我的个人Google帐户,这是我认为服务帐户(我认为我需要)不能代表我做的事情

为了让我手动运行并使用Google Calendar对我进行身份验证的脚本每60秒在云中运行一次(理想情况下是在云中运行),我需要采取哪些步骤,这样我就不需要一直打开我的计算机

我试着做的事情:

我创建了一个具有完全权限的服务帐户,并尝试创建一个http触发器事件,该事件理论上会在命中创建的URL时运行脚本。但是,它只返回一个HTTP500错误。 我试着使用Pub/Sub事件目标来侦听和执行脚本,但这也不起作用

我感到困惑的是:

对于任一帐户,都需要有一个credentials.json文件才能登录;这个文件是如何与主功能一起“部署”的?以及第一次进行身份验证时创建的token.pickle文件


Tags: 文件函数命令行脚本身份验证apigoogle作业
1条回答
网友
1楼 · 发布于 2024-04-24 10:04:36

服务帐户的工作方式是需要对其进行预授权。您可以使用服务帐户的电子邮件地址并与之共享日历,就像您与任何其他用户共享日历一样。这里的问题是,您应该只使用由开发人员控制的日历来执行此操作。如果这些日历为他人所有,则不应使用服务帐户

Oauth2的工作方式是向用户显示一个同意屏幕,以允许您的应用程序访问其数据。一旦用户授予您访问权限,并且假设您请求脱机访问,您应该拥有该用户帐户的刷新令牌。使用刷新令牌,您可以随时请求新的访问令牌。因此,这里的技巧是将用户刷新令牌存储在脚本可以访问它的位置,然后当cron作业运行时,它需要做的第一件事是使用其刷新令牌请求新的访问令牌

因此,作为cron作业,您能够做到这一点的唯一方法是为您想要访问的帐户存储刷新令牌。另一方面,它需要打开一个web浏览器来请求用户的同意,而你不能用cron作业来实现这一点

相关问题 更多 >