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

问题描述 投票:1回答:3

我想在不使用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 =*********返回“需要登录”>

任何帮助将非常感激

python google-calendar-api api-key
3个回答
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 = "[email protected]"
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'])

0
投票

抱歉,您必须使用OAuth 2

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


0
投票

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

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

我不是一个python dev,所以对代码无能为力,但Google的文档中有很多例子

© www.soinside.com 2019 - 2024. All rights reserved.