Google App Engine覆盖Google Calendar API V3中的默认提醒

时间:2013-10-08 16:12:05

标签: python google-app-engine google-calendar-api

我编写了一个Google App Engine程序,该程序使用Google Calendar API V3将事件插入日历。该程序可以覆盖默认提醒设置。虽然程序插入事件没有问题(无状态4x​​x),但新插入的事件仍使用默认设置。建议将不胜感激!

以下是一些细节:

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
          }

1 个答案:

答案 0 :(得分:0)

对我来说,以编程方式插入的事件的提醒来自我的默认日历,而不是事件被添加到的日历。我从视图中过滤掉了我的默认日历以解决问题。我找不到任何其他方式(即提醒useDefault False,“False”,覆盖等)