我编写了一个 Google App Engine 程序,它使用 Google Calendar API V3 将事件插入日历。该程序可以覆盖默认提醒设置。虽然程序插入事件没有问题(无状态 4xx),但新插入的事件仍然使用默认设置。建议将不胜感激!
以下是一些细节:
1) 在 API 控制台中,我注册了一个服务应用程序并下载了私钥。
2) 我将 PK12 密钥转换为 PEM
openssl pkcs8 -nocrypt -in privatekey.pem -passin pass:notasecret -topk8
-out pk.pem
3) 在日历设置中,我通过其 xxx@developer.gserviceacount.com 与服务应用程序共享日历。
4)在日历设置中,我赋予程序更改事件的能力。
5) 我使用 SignedJwtAssertionCredentials 进行身份验证
f = file("pk.pem", "rb")
key = f.read()
f.close()
credentials = SignedJwtAssertionCredentials(
service_account_name='xxxx@developer.gserviceaccount.com',
private_key=key,
scope='https://www.googleapis.com/auth/calendar')
http = credentials.authorize(httplib2.Http())
service = build('calendar', 'v3',http=http)
6) 我通过其 calendarId 指定日历。
service.events().insert(calendarId='@group.calendar.google.com',body=event).execute()
反过来,事件是:
event = { 'summary': 'Appointment from Google App Engine',
'location': 'Somewhere',
'start': {
'dateTime': start_time
},
'end': {
'dateTime': end_time
},
"reminders":
{
"useDefault": "False",
"overrides": [
{
"method": "email",
"minutes": reminder_period
},
]
},
"description": description
}