howtos:googleapi
Table of Contents
Гугл-шмугл
- Цель - научиться добавлять в гугл-календарь новые события и напоминания, используя Google API
Установка
- я использую php-интерфейс. Он основан на Zend Framework и называется Zend gdata.
- Руководство по установке. Установка заключается в распаковке архива в c gdata в надежное место, доступное для чтения пользователем www-data и добавлением в Apache-конфиг php (php.conf) строчки
include_path = “/var/www/php-example/zendgdata/library:.:/usr/share/php5/”
Ссылки
- Официальный Ман
- Какой-никакой туториал есть на сайте Zend Framework
- PhpDocumentor - описание API, сгенерированное пыховским аналогом Javadoc
Как можно научиться
Списываем куски кода из примера
- открываем пример и начинаем запускать его с разными параметрами с помощью php-cli.
php-cli - это интерпретатор php, запускаемый из shell. Он бывает очень полезным, если надо проверить ошибки в своем скрипте на пыхе, а на браузер переключаться лень. В ubuntu ставится из пакета php-cli.
- пример находится в $ZENDGDATA/demos/Zend/Gdata/Calendar.php
- сначала посмотрим, как использовать этот скрипт:
php -f Calendar.php
Usage: php Calendar.php <action> [<username>] [<password>] [<arg1> <arg2> ...] Possible action values include: outputCalendar outputCalendarMagicCookie outputCalendarByDateRange outputCalendarByFullTextQuery outputCalendarList updateEvent deleteEventById deleteEventByUrl createEvent createQuickAddEvent createWebContentEvent createRecurringEvent setReminder addExtendedProperty
- попробуем php Calendar.php createEvent - надо указать кучу дат, логин и пароль пользователя.
Usage: php Calendar.php createEvent <username> <password> <title> <description> <where> <startDate> <startTime> <endDate> <endTime> <tzOffset> EXAMPLE: php Calendar.php createEvent <username> <password> 'Tennis with Beth' 'Meet for a quick lesson' 'On the courts' '2008-01-01' '10:00' '2008-01-01' '11:00' '-08'
- Ну а теперь смотрим и наслаждаемся новым свежесозданным событием в Календаре! А затем лезем в код и смотрим, какие функции для этого вызывались.
Первая личная программа
Собственно, всё скатано прямо из примеров. Сначала мы подключаемся, а затем создаем событие. Результат - новая запись в гугл-календаре!
<?php /** * Returns a HTTP client object with the appropriate headers for communicating * with Google using the ClientLogin credentials supplied. * * @param string $user The username, in e-mail address format, to authenticate * @param string $pass The password for the user specified * @return Zend_Http_Client */ require_once 'Zend/Loader.php'; Zend_Loader::loadClass('Zend_Gdata_AuthSub'); Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); Zend_Loader::loadClass('Zend_Gdata_HttpClient'); Zend_Loader::loadClass('Zend_Gdata_Calendar'); Zend_Loader::loadClass('Zend_Gdata_Calendar_EventEntry'); function getClientLoginHttpClient($user, $pass) { $service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service); return $client; } function createEvent ($client, $title = 'Tennis with Beth', $desc='Meet for a quick lesson', $where = 'On the courts', $startDate = '2008-01-20', $startTime = '10:00', $endDate = '2008-01-20', $endTime = '11:00', $tzOffset = '-08') { $gc = new Zend_Gdata_Calendar($client); $newEntry = $gc->newEventEntry(); $newEntry->title = $gc->newTitle(trim($title)); $newEntry->where = array($gc->newWhere($where)); $newEntry->content = $gc->newContent($desc); $newEntry->content->type = 'text'; $when = $gc->newWhen(); $when->startTime = "{$startDate}T{$startTime}:00.000{$tzOffset}:00"; $when->endTime = "{$endDate}T{$endTime}:00.000{$tzOffset}:00"; $newEntry->when = array($when); $createdEntry = $gc->insertEvent($newEntry); return $createdEntry->id->text; } $authClient = getClientLoginHttpClient("wtf.with.calendar", "q1w2e3r4"); createEvent($authClient, 'my first event' , 'event description', 'nowhere', '2010-03-07', '02:00', '2010-03-07', '05:00', '-08'); ?>
Reminders
- Сразу же захотелось копнуть вглубь и попробовать поставить напоминалку с помощью SMS.
- Увы, это не так просто. Напоминания описываются в xml и парсятся при помощи DOM. Завтра я сделаю себе такой напоминарчик.
howtos/googleapi.txt · Last modified: 2016/08/07 01:21 by kel