Как добавить календарь событий в Google Calendar из Flask приложения без oauth? - PullRequest
0 голосов
/ 29 апреля 2020

В моем текущем приложении Flask в базе данных flask - sql -alchemy есть столбец User. Я занимаюсь созданием пользователя и логина (НЕ обрабатывается с помощью логина Google). В функциональности веб-приложения flask события календаря на будущее создаются из формы. Как бы я добавил эти события в календарь Google пользователя, не имея своей информации oauth? Будет ли работать следующий код, который я нашел на веб-сайте API Календаря Google, без информации пользователей Google? Или это только добавит к календарю учетной записи, с которой инициализируется API календаря.

insert.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

1 Ответ

0 голосов
/ 30 апреля 2020

Подход

Если вы хотите создать события в календарях своих пользователей, вам нужно будет получить их разрешение тем или иным способом.

  1. Если они войдут в систему со своими учетными данными Google в вашем приложении они могут создавать события непосредственно в своем календаре. Но для этого требуется поток аутентификации OAuth2.
  2. Если у вас есть разрешение на запись в один из ваших пользовательских календарей, вы можете переместить только что созданное событие в этот календарь, используя только свои учетные данные.
# First retrieve the event from the API.
updated_event = service.events().move(
    calendarId='primary', eventId='eventId',
    destination='destinationCalendarId').execute()

Вы можете добавить поле destinationCalendarId в свою форму.

Замечание

Добавление ваших пользователей к событию в качестве участников будет показывать событие в их календаре, имея вас в качестве организатора. Если этого достаточно для ваших нужд, это самый простой способ, поскольку он требует только ваших учетных данных.

Ссылка:

Настройки общего доступа к календарю

Событие двигаться

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...