Проверка подлинности моей учетной записи вручную с помощью API Календаря Google v3 - PullRequest
1 голос
/ 07 января 2012

Что я пытаюсь сделать:

Разрешить пользователям, прошедшим проверку подлинности и авторизацию на моем сайте, использовать форму, позволяющую им создавать события в моем календаре с помощью API Календаря Google.

Я смог выполнить это с помощью Google Calendar API v2, вручную аутентифицировав свой аккаунт Google, выполнив следующие действия:

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, но я не знаю, как это сделать с V3 API.

Я прочитал документацию и попытался внедрить:

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

Но для этого необходимо создать объект service, что, в свою очередь, требует аутентификации учетной записи через OAuth 2.0, а это не то, чего я пытаюсь достичь. Мне нужно вручную аутентифицировать свой собственный календарь, а не спрашивать пользователя, может ли мое приложение получить доступ к их календарю.

Я уверен, что мне не хватает какой-то фундаментальной логики или ложных предположений. Мы будем благодарны за любую помощь в правильном направлении.

Ответы [ 2 ]

1 голос
/ 07 января 2012

Вы должны использовать OAuth для авторизации вашего кода для доступа к вашему собственному календарю ;как только вы это сделаете, вы получите токен, который сможете сохранить.Когда ваш код запускается снова, он должен повторно использовать токен для подключения к вашему календарю.Пользователи не будут подвергнуты сомнению, но токен может обновляться время от времени.

Не могу предложить какой-либо код, потому что я лично ненавижу OAuth со страстью: (

0 голосов
/ 01 апреля 2013

@ 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

...