我正在尝试将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 = //* ****返回“需要登录”>
非常感谢任何帮助
答案 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的文档中有很多例子