将Google Calendar API与API密钥Python一起使用

时间:2015-07-15 17:49:03

标签: python google-calendar-api api-key

我正在尝试将Google日历集成到我的网络应用中而不使用OAuth。由于我正在使用的所有日历都是公开的,因此我尝试使用API​​密钥,以避免重定向用户。

我目前正在玩Calendar事件示例,并尝试使用API​​密钥。这是代码:

import httplib2
import os

from apiclient import discovery


import datetime



SCOPES = 'https://www.googleapis.com/auth/calendar'
api_key = '************'
APPLICATION_NAME = 'Google Calendar API Quickstart'


def main():

    service = discovery.build('calendar', 'v3', developerKey=api_key)

    event = {
  'summary': 'Google I/O 2015',
  'location': '800 Howard St., San Francisco, CA 94103',
  'description': 'A chance to hear more about Google\'s developer products.',
  'start': {
    'dateTime': '2015-05-28T09:00:00-07:00',
    'timeZone': 'America/Los_Angeles',
  },
  'end': {
    'dateTime': '2015-05-28T17:00:00-07:00',
    'timeZone': 'America/Los_Angeles',
  },
  'recurrence': [
    'RRULE:FREQ=DAILY;COUNT=2'
  ],
  'attendees': [
    {'email': '******@*****.com'},

  ],
  'reminders': {
    'useDefault': False,
    'overrides': [
      {'method': 'email', 'minutes': 24 * 60},
      {'method': 'popup', 'minutes': 10},
    ],
  },
}

    event = service.events().insert(calendarId='primary', body=event).execute()
#print 'Event created: %s' % (event.get('htmlLink'))


if __name__ == '__main__':
    main()

当它运行时它会给我以下错误:googleapiclient.errors.HttpError:https://www.googleapis.com/calendar/v3/calendars/primary/events?val = json& key = //* ****返回“需要登录”>

非常感谢任何帮助

3 个答案:

答案 0 :(得分:1)

我使用Python 3仅通过使用API​​开发人员密钥在公共日历上获取即将发布的10个事件 - 没有OAuth 2。

没有from apiclient.discovery import build它也不起作用。

这适用于我(仅在控制台中测试):

from apiclient import discovery
import datetime
from apiclient.discovery import build


dev_Key = "XXXX"
cal_ID = "publicMail@gmail.com"
now = datetime.datetime.utcnow().isoformat() + 'Z'

service = build('calendar', 'v3', developerKey=dev_Key)


eventsResult = service.events().list(calendarId=cal_ID, timeMin=now, maxResults=10, singleEvents=True, orderBy='startTime').execute()
events = eventsResult.get('items', [])

    for event in events:
        start = event['start'].get('dateTime', event['start'].get('date'))
        print(start, event['summary'])

答案 1 :(得分:0)

抱歉,您必须使用OAuth 2

"您的应用程序必须使用OAuth 2.0来授权请求​​。不支持其他授权协议。 "

答案 2 :(得分:0)

您只能使用API​​密钥从公共日历中读取。我从未插入或更新工作。

您应该使用的是一个服务帐户,就像一个虚拟预先批准的用户,拥有自己的日历帐户。你也可以用它分享日历。然后,它可以访问这些日历,而无需宣传您的用户进行访问。

我不是一个python dev,因此无法对代码提供太多帮助,但Google的文档中有很多例子