Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为我的calnedar获取某一天的所有google日历事件?_Python_Google Calendar Api - Fatal编程技术网

Python 如何为我的calnedar获取某一天的所有google日历事件?

Python 如何为我的calnedar获取某一天的所有google日历事件?,python,google-calendar-api,Python,Google Calendar Api,我想在linux终端中用一个简单的脚本获取我自己的日常事件列表,并返回一个文本。输出应如下所示: (all day) Buy a pony to my neighbor's daughter (all day) Douglas Adams birthday (all day) Battle of Mborore commemoration 8:00am-8:30am take dog to church 9:00am-11:30am meeting wi

我想在linux终端中用一个简单的脚本获取我自己的日常事件列表,并返回一个文本。输出应如下所示:

    (all day) Buy a pony to my neighbor's daughter 
    (all day) Douglas Adams birthday
    (all day) Battle of Mborore commemoration
    8:00am-8:30am take dog to church
    9:00am-11:30am meeting with Papa Snurf
    (...)
    6:00pm-11:00pm Python 4.0 meetup (free pizza!)
    11:20pm Lunar eclipse and end of the world
你可以想象,当我进入“今天”时,我在一个网页界面上有几个日历。当我使用android应用程序或web界面时,它对我来说是透明的,但我无法从python中找到一种简单的方法来实现这一点

我希望有一些iCal URL和一些来自谷歌日历的标记。但情况似乎并非如此,我需要某种OAuth2身份验证(根据上的“easy authentication”),就像我代表其他人做某事一样(这可能是应用程序开发人员最常见的用例)

有人能给我指出一个做类似事情的python完整脚本吗

编辑一个:阅读评论后,我附带了一些Python代码:

from datetime import datetime, timedelta
from apiclient.discovery import build
from oauth2client.client import SignedJwtAssertionCredentials

with open('my-app.p12', 'rb') as f:
  key = f.read()

service_account_name = '1....3@developer.gserviceaccount.com'
sub = 'MY_EMAIL'

credentials = SignedJwtAssertionCredentials(
    service_account_name,
    key, 
    scope=['https://www.googleapis. com/auth/calendar',
        'https://www.googleapis. com/auth/calendar.readonly'],
    sub=sub)

http = httplib2.Http()
http = credentials.authorize(http)

service = build(serviceName='calendar', version='v3', http=http)

showDeleted = True

lists = service.calendarList().list().execute()
pprint.pprint(lists)

page_token = None
while True:
  events = service.events().list(calendarId=service_account_name,
    pageToken=page_token).execute()
service_account_name取自Oauth->service account->Email address(在开发者控制台的凭据下),my-app.p12是我创建应用程序时下载的密钥二进制文件(我在同一过程中也有一个对话框中的文本密码,但从未使用过)

注意:URL上有一个空格。。。因为我在堆栈溢出方面没有足够的声誉

编辑2:此问题已解决

几个注意事项:创建一个服务帐户。正如@DaImTo指出的那样。不知何故,我错过了他在链接上指出的一些解释

特别是,我没有在此处为域创建正确的作用域身份验证:


非常感谢你的回答。我希望我有更高的声誉在那里投票给一些答案

查阅以下资源:

  • 日历API v3程序示例
  • 谷歌日历v3api文档
  • 如何通过Google开发者控制台创建客户端机密文件

更新:尝试与用户共享日历
1。。。。3@developer.gserviceaccount.com
并查看这是否解决了未经授权的客户端问题。

因为您只访问自己的数据,我建议您查看一个。通过像其他用户一样向服务帐户的电子邮件地址授予访问日历的权限,它将能够读取事件,而无需您干扰Oauth2

之后就是使用的问题了

CalendarList:获取您授予服务帐户访问权限的所有日历的列表。一旦它有了日历列表,它就可以找到


这应该足以让你开始。尝试搜索Ruby Google日历api示例。不幸的是,我没有使用ruby的经验,因此无法帮助您。

您好。为了帮助您,我们需要查看您编写的实际代码。请编辑您的问题并添加相关代码好吗?(确保隐藏任何ID或其他敏感信息)这不是Ruby或Java问题。@theTinMan是正确的。而编辑之后就只有Python了。标签移除。谢谢!我认为这是条正确的道路,但我做错了什么。编辑1上有一些python代码。也许你能给我一个提示。感谢是阅读您发送的服务帐户链接的问题。我用缺少的步骤更新了问题。。。谢谢你的链接,我以前也找到过,但我觉得API只适用于访问他人日历的移动/网络类应用程序。我只想检索我的资料。使用v2 calendar API(现已弃用并关闭),您的脚本可以使用用户名+密码访问日历,但现在您必须注册客户端并授予客户端访问日历的权限。另一个选项是创建一个服务帐户并与该服务帐户共享您的日历。如果你需要更多的细节,请告诉我。我与那封邮件分享了,结果也是一样的。我还注意到,只允许我共享忙/闲信息。我的想法是安排一天所有的会议。