使用Google Calendar API v3手动验证我的用户帐户

时间:2012-01-06 20:30:37

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

我正在尝试做什么:

允许在我的网站上经过身份验证和授权的用户使用允许他们使用Google日历API在我的日历上创建活动的表单。

我可以通过手动验证我的Google帐户来通过Google Calendar API v2完成此操作:

calendar_service = gdata.calendar.service.CalendarService()
calendar_service.email = 'email@site.com'
calendar_service.password = 'password'
calendar_service.source = 'Calendar'
calendar_service.ProgrammaticLogin()

然后我可以在我的网站表单中输入POST日期并使用API​​创建一个事件,但我对如何使用API​​的V3进行此操作感到茫然。

我已阅读文档并尝试实施:

created_event = service.events().insert(calendarId='primary', body=event).execute()

但是这需要创建一个service对象,这反过来需要通过OAuth 2.0进行帐户身份验证,这不是我想要完成的。我需要手动验证我自己的日历,而不是询问用户我的应用程序是否可以访问他们的日历。

我确信我缺少一些基本逻辑或做出一些错误的假设。任何正确方向的帮助都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

您必须使用OAuth授权您的代码才能访问您自己的日历;一旦你这样做,你将得到一个你可以保留的令牌。当您的代码再次运行时,它应该重用该令牌来连接您的日历。用户不会受到质疑,但令牌可能会不时刷新。

无法建议任何代码,因为我个人非常讨厌OAuth :(

答案 1 :(得分:0)

@Ben - 可以使用密钥/秘密组合或使用服务帐户创建service对象,您可以使用电子邮件/证书组合和prn参数来识别用户你想要经营。这两种方法都需要在API控制台中注册。

使用服务帐户,您只需在prn参数中指定您的电子邮件地址,即可将事件插入您的日历中。插入语句保持不变,因为您使用此规范在您的帐户上运行。

credentials = SignedJwtAssertionCredentials(SERVICE_ACCOUNT_EMAIL, key,
  scope='https://www.googleapis.com/auth/calendar', prn='you@domain.com')
...

created_event = service.events().insert(calendarId='primary', body=event).execute()

以下是一个示例:https://developers.google.com/drive/delegation