Как использовать OAuth с Календарем Google для доступа только к одному календарю?

Я создаю веб-приложение для клиента, и я не уверен, что я поступаю правильно …

В принципе, я создал приложение PHP, которое читает, редактирует, удаляет календари в Google и хранит копию в моей собственной базе данных веб-приложений (по разным причинам). Теперь я прочитал об OAuth 2.0 и понял, что использовать его можно безопаснее, чем мой общий пароль для Google (доступ ко всем сервисам Google (календарь, электронная почта и т. Д.)) Прямо в моем веб-приложении в файле PHP (в другом слова, если хакер войдет на сервер, чем он может украсть свой пароль …).

Поэтому я создал учетную запись OAuth 2.0, добавив классы / папки с этой страницы http://code.google.com/apis/calendar/v3/using.html#setup и добавил правильные сценарии на тестовой странице, чтобы «разрешить доступ к вашей информации » (see "Instantiating the client " in the same page)

Вот мои вопросы: если я зарегистрировался в своем gmail с моей регистрационной информацией (а не с моим клиентом), и я перейду на свою тестовую страницу, он попросит ME разрешить доступ к моему Календарю Google. Но я хочу календарь своего клиента, НЕ МОЙ! Итак, давайте притворимся, что я выхожу из системы, войдите в систему с моей информацией о клиенте и перейдите на тестовую страницу: это прекрасно, я авторизую учетную запись, а затем перенаправляюсь в свое приложение, где я могу видеть календарь HER.

Но это непрактично или логично … Так, например, я хочу, чтобы люди на своем веб-сайте GENERAL PUBLIC пошли на страницу и заполнили форму, чтобы автоматизировать ее встречи. Скрипт должен проверить свой календарь Google … и спросить разрешение для своих учетных записей gmail? Нет, я хочу его календарь.

Так что это моя проблема / вопрос. Что я делаю не так? Это правильный способ сделать это или я пропустил шаг? Был ли этот API предназначен для этого?

Как я могу использовать API для работы описанным выше способом?

Спасибо всем, чтобы зажечь мою свечу

Joel

Если я правильно вас понимаю, у вас есть право на аутентификацию. Проблема заключается в том, что вы не хотите отображать календарь зарегистрированного пользователя; вы хотите отобразить календарь своего клиента.

Пользователь может писать в календарь в одном из двух обстоятельств:

  1. Пользователь владеет календарем или
  2. Владелец предоставил пользователю прямой доступ к записи, указав адрес электронной почты пользователя.

Ясно, что вторая ситуация не масштабируется. И в любом случае вам нужно будет внедрить учетные данные своего клиента в свое приложение, а затем использовать их либо для создания встреч от имени аутентифицированного пользователя, либо для совместного использования календаря с пользователем. Разумеется, вы захотите зашифровать учетные данные своего клиента – просто не используйте их в своем приложении!

Вместо того, чтобы использовать «реальную» учетную запись вашего клиента, было бы более безопасно создавать новую учетную запись (с уникальным адресом электронной почты и паролем) специально для этого календаря. Тогда ваш клиент мог бы получить к нему доступ через приложение, как это делают ее клиенты, или вы могли бы поделиться с ней календарем и дать ей доступ на запись.

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

Мне было бы интересно узнать, найдет ли вы (или кто-либо еще) лучшее решение.

У меня та же проблема, я решил использовать zend framework, даже если мне это не нравится, поскольку она еще есть, и я пытаюсь сделать с google api напрямую. (и я не могу) Zend обернуть вокруг них, я полагаю.

Я знаю, что в любом случае вопрос очень старый, я включил класс загрузчика zend и расширение календаря. Тогда я просто использую:

 if($something) { $client = getClientLoginHttpClient($usergmail, $passgmail); createEvent($client,$dbcon,$id_event); } 

где $ dbcon – это соединение с моим dv, а $ id_event – это идентификатор, где я могу найти данные, которые я хочу вставить (дата, содержимое, название, время и т. д.). Мне это не нравится, но это работает.