【发布时间】:2020-04-30 16:34:54
【问题描述】:
在我当前的 Flask 应用程序中,我的 flask-sql-alchemy 数据库中有一个用户列。我处理用户和登录的创建(不使用谷歌登录处理)。在烧瓶 webapp 的功能中,未来的日历事件是从表单创建的。在没有他们的 oauth 信息的情况下,如何将这些事件添加到用户的谷歌日历中?如果没有用户的谷歌信息,我在谷歌日历 API 网站上找到的以下代码可以工作吗?或者这只会添加到初始化日历 api 的帐户的日历中。
插入.py
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': user.email}
],
'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'))
这就是我想要的功能:
@app.route('/account', methods=['GET', 'POST'])
@login_required
def account():
form = Form()
if form.validate.on_submit():
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': form.datetime_start.data,
'timeZone': form.timezone.data,
},
'end': {
'dateTime': form.datetime_end.data,
'timeZone': form.timezone.data,
},
'recurrence': [
'RRULE:FREQ=DAILY;COUNT=2'
],
'attendees': [
{'email': current_user.email}
],
'reminders': {
'useDefault': False,
'overrides': [
{'method': 'email', 'minutes': 24 * 60},
{'method': 'popup', 'minutes': 10},
],
},
}
event = service.events().insert(calendarId='primary', body=event).execute() # the event is now in the users calendar
【问题讨论】:
-
使用 OAuth 的障碍是什么?
-
@xdhmoore 我想我对 OAuth 有点困惑。这是否意味着每个用户都必须为我提供他们的 OAuth 令牌才能将日历事件添加到他们的谷歌日历?
-
好吧,OAuth 中有不同的身份验证流程,但我使用它的方式是在我的网站上提供一个指向 google 的链接,用户可以去该链接并授予我访问权限,然后 google 将它们返回给我的网站连同一个访问代码,我可以发送给谷歌并取回我在调用 api 时使用的令牌。是的,这有点令人困惑。
标签: python flask google-calendar-api