войдите в браузер Google с помощью php (zend gdata) - PullRequest
2 голосов
/ 19 сентября 2011

Я использовал личную ссылку общего доступа для просмотра календаря на личной странице моих пользователей, но теперь Google решил что-то изменить https://www.google.com/support/calendar/bin/answer.py?answer=1631300

Скажите, что у меня есть пароль пользователя и имя пользователя,Я могу войти в учетную запись Google и добавить события или материал с помощью Zend Framework, но как я могу войти в Google и сделать вход в браузер (добавить cookie или что-то в этом духе, как если бы пользователь зашел в gmail, он уже вошел в систему).

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

ОБНОВЛЕНИЕ

как я могу показать календарь(даже чтение только будет хорошо) в iframe, если у меня есть имя пользователя / пароль от его учетной записи Gmail (или Google)

Ответы [ 2 ]

5 голосов
/ 19 сентября 2011

Вы не можете написать cookie за пределами своего домена из-за межсайтовой политики.

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

Я думаю, что это может быть полезным ресурсом .

0 голосов
/ 19 октября 2011

Вы должны убедиться, что пользователь либо поделился календарем, либо сделал его общедоступным.Google пытается усилить их безопасность.Метод, который вы использовали, позволил вам получить доступ к личным календарям пользователя.Это явно нежелательное поведение.API протокола данных Google поддерживает несколько методов аутентификации.Paage HERE предназначен для того, чтобы помочь вам выбрать подходящий для вашего приложения.Api docs рекомендует использовать oauth для аутентификации, а сайт http://oauth.net/ предлагает несколько библиотек для доступа к API из PHP.OpenID также является поддерживаемой опцией, а также гибридом, который призван упростить процесс, используя преимущества OAuth и OpenID.

Что касается отображения календаря в IFrame, просто создайте HTML-страницу, котораяПолучает ленту атомов для вашего календаря и отображает события в формате HTML.Так как это XML, любой метод обработки XML, который вам нравится, будет работать (например, XSLT, simpleXML и т. Д.). Затем используйте URL-адрес этой страницы в качестве атрибута источника вашего iframe.

Вот пример использования библиотеки gata ZEND:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Example List of calendar contents</title>
  </head>
  <body>
    <?php
      // load library
      require_once 'Zend/Loader.php';
      Zend_Loader::loadClass('Zend_Gdata');
      Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
      Zend_Loader::loadClass('Zend_Gdata_Calendar');
      Zend_Loader::loadClass('Zend_Http_Client');

      // create authenticated HTTP client for Calendar service
      $gcal = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
      $user = "username@gmail.com";
      $pass = "pass";
      $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $gcal);
      $gcal = new Zend_Gdata_Calendar($client);

      // generate query to get event list
      $query = $gcal->newEventQuery();
      $query->setUser('default');
      $query->setVisibility('private');
      $query->setProjection('basic');

      // get and parse calendar feed
      // print output
      try { $feed = $gcal->getCalendarEventFeed($query); } 
      catch (Zend_Gdata_App_Exception $e) { echo "Error: " . $e->getResponse(); }
    ?>
    <h1><?php echo $feed->title; ?></h1>
    <p><?php echo $feed->totalResults; ?> event(s) found.<p/>
    <ol>
      <?php        
        foreach ($feed as $event) 
        {
          echo "<li>\n";
          echo "<h2>" . stripslashes($event->title) . "</h2>\n";
          echo stripslashes($event->summary) . " <br/>\n";
          echo "</li>\n";
        }
        echo "</ul>";
      ?>
    </ol>

  </body>
</html> 

URL-адрес этого файла является источником вашего IFrame.
Удачи и удачного кодирования.

...