Как использовать OAuth с Календарем Google для доступа только к ОДНОМУ календарю? - PullRequest
2 голосов
/ 25 ноября 2011

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

По сути, я создал 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 с моей регистрационной информацией (не моим клиентом), и я перешел на свою тестовую страницу, он попросит меня санкционировать доступ к моему Календарю Google. Но я хочу календарь моего клиента, а не мой! Итак, давайте представим, что я выхожу из системы, входите в систему с информацией о моем клиенте и переходите на тестовую страницу: это прекрасно, я авторизую учетную запись, а затем перенаправляюсь в свое приложение, где я вижу календарь HER.

Но это не практично ИЛИ не логично ... Так как, например, я хочу, чтобы люди на ее ОБЩЕМ ПУБЛИЧНОМ веб-сайте заходили на страницу и заполняли форму, чтобы автоматизировать ее встречи. Сценарий должен проверить ее календарь Google .... и спросить разрешение на свои учетные записи Gmail? Нет, я хочу ее календарь.

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

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

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

Joel

Ответы [ 2 ]

1 голос
/ 25 ноября 2011

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

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

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

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

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

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

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

0 голосов
/ 25 октября 2013

У меня та же проблема, я решил использовать Zend Framework, даже если мне не нравится, как есть, и я пытаюсь сделать с Google API напрямую. (а я не в состоянии) Полагаю, Зенд обернулся вокруг них.

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

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

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

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