我想在不使用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 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'])
抱歉,您必须使用OAuth 2
“您的应用程序必须使用OAuth 2.0来授权请求。不支持其他授权协议。”
您只能使用API密钥从公共日历中读取。我从未插入或更新工作。
你应该使用的是一个服务帐户,就像一个虚拟的预先批准的用户,拥有自己的日历帐户。你也可以用它分享日历。然后,它可以访问这些日历,而无需提升您的用户访问权限。
我不是一个python dev,所以对代码无能为力,但Google的文档中有很多例子