Google Data PHP İstemci Kitaplığı'nı kullanmaya başlama

Uyarı: Bu sayfa, Google'ın eski API'leri olan Google Veri API'leri hakkındadır. Yalnızca Google Veri API'leri dizininde listelenen API'ler için geçerlidir. Bu API'lerin çoğu daha yeni API'lerle değiştirilmiştir. Belirli bir yeni API hakkında bilgi edinmek için yeni API'nin belgelerine bakın. Daha yeni bir API ile istekleri yetkilendirme hakkında bilgi edinmek için Google Hesapları Kimlik Doğrulama ve Yetkilendirme başlıklı makaleyi inceleyin.

Jochen Hartmann, Google Veri API'leri Ekibi
Ekim 2008'de güncellendi (İlk olarak Daniel Holevoet tarafından yazılmıştır)

Giriş

Google Data PHP İstemci Kitaplığı, Google Data API'leri ile etkileşim kurmanıza olanak tanıyan güçlü bir sınıf koleksiyonudur. Diğer istemci kitaplıklarımızdan farklı olarak, popüler Zend Framework'ün bir parçası olarak paketlenir ancak ayrı olarak da indirilebilir. Diğer istemci kitaplıklarımız gibi bu kitaplık da açık kaynaklıdır ve basit ve verimli olacak şekilde tasarlanmıştır. Böylece projelerinize hızlı bir şekilde başlayabilirsiniz.

Kurulum Öncesi

PHP, geliştirme makinenize veya web sunucunuza önceden yüklenmiş olabilir. Bu nedenle, ilk adım bu durumu doğrulamak ve PHP sürümünün istemci kitaplığı için kullanılabilecek kadar yeni olduğundan emin olmaktır. Kontrol etmenin en kolay yolu, sunucunuzdaki web'den erişilebilen bir dizine yeni bir dosya yerleştirmektir. Dosyaya aşağıdaki bilgileri girin:

<?php phpinfo(); ?>

Ardından, uygun izinleri ayarlayarak web'den erişilebilir olduğundan emin olun ve tarayıcınızdan konumuna gidin. PHP yüklüyse ve sunucunuz PHP sayfalarını oluşturabiliyorsa aşağıdaki ekran görüntüsüne benzer bir şey görmeniz gerekir:

php info sayfası ekran görüntüsü

Ekran görüntüsünde PHP bilgisi sayfası gösteriliyor. Bu sayfada, yüklenen PHP sürümü (bu örnekte 5.2.6), hangi uzantıların etkinleştirildiği ("Yapılandırma Komutu" bölümünde) ve PHP'nin dahili yapılandırma dosyasının konumu ("Yüklenen Yapılandırma Dosyası" bölümünde) gösterilir. Sayfa görüntülenmiyorsa veya PHP sürümünüz 5.1.4'ten eskiyse PHP sürümünüzü yüklemeniz ya da yükseltmeniz gerekir. Aksi takdirde, bir sonraki bölümü atlayıp PHP istemci kitaplığını yükleme bölümüne geçebilirsiniz.

Not: Komut satırına erişiminiz varsa ve komut satırı komut dosyalarını çalıştırmak için PHP kullanmayı planlıyorsanız lütfen bu makalenin komut satırı PHP bölümüne bakın.

PHP'yi yükleme

Yükleme, platforma göre biraz farklılık gösterir. Bu nedenle, yükleme sırasında platformunuza özel talimatları uygulamanız önemlidir. Konuya geçmeden önce, PHP'nin yanı sıra Apache web sunucusu ve MySQL veritabanını da içeren önceden yüklenmiş paketlerin popülerliğinin arttığını belirtmek isteriz. Windows, Mac OS X ve Linux için XAMPP projesi vardır. Mac OS X kullanıcıları MAMP projesini de kullanabilir. Bu paketlerin her ikisi de PHP'de OpenSSL'yi destekler (kimliği doğrulanmış feed'lerle etkileşim için gereklidir).

PHP'yi aşağıdaki adımları kullanarak yüklerseniz OpenSSL desteğini de yükleyip etkinleştirdiğinizden emin olun. Bu konuyla ilgili daha fazla bilgiyi PHP sitesinin OpenSSL bölümünde bulabilirsiniz. Aşağıdaki bölümlerde, PHP'nin tek başına nasıl yükleneceği açıklanmaktadır.

Windows'da

Windows'da PHP'yi yüklemenin veya yükseltmenin en kolay yolu, PHP indirme sayfasında bulunan PHP yükleyiciyi kullanmaktır.

  1. PHP'nin en yeni sürümüne karşılık gelen PHP yükleyici seçeneğini (Windows ikilileri bölümünde) belirleyin ve indirilmesine izin verin.
  2. Yükleyiciyi açın ve yükleme sihirbazının talimatlarını uygulayın.
  3. Sihirbaz sizi yönlendirdiğinde, sunucuyu PHP ile çalışacak şekilde yapılandırmak için sisteminize yüklenen web sunucusunu seçin.
  4. Yukarıdaki bölümde belirtilen adımları uygulayarak yüklemenizi kontrol edin.

Mac OS X'te

PHP, OS X'te yer alır ancak kullanmadan önce PHP'nin en son sürümüne yükseltmeniz gerekir. Yükseltmek için çeşitli ücretsiz ikili paketlerden herhangi birini yükleyebilir veya kendiniz derleyebilirsiniz. Ayrıntılar için Mac OS X'e yükleme ile ilgili PHP dokümanları sayfasına bakın.

OS X'i yükledikten veya başka bir şekilde kurduktan sonra, bu belgenin yükleme öncesi bölümünde belirtilen adımları uygulayarak yüklemenizi kontrol edin.

Linux'ta

Linux dağıtımına bağlı olarak, PHP yüklemesi için yerleşik veya kolayca kullanılabilen bir kurulum seçeneği olabilir. Örneğin, Ubuntu'da paket yöneticisi kullanabilir veya terminale aşağıdaki komutu girebilirsiniz:

sudo apt-get install php5

Linux dağıtımınızda paketlenmiş yükleme yoksa kaynak koddan yükleme yapmanız gerekir. Apache 1.3 için PHP'yi derleme ve Apache 2 için PHP'yi derleme hakkında ayrıntılı talimatlar vardır. PHP.net'te diğer sunucularla ilgili talimatlar da bulunur.

Google Data PHP İstemci Kitaplığı'nı yükleme

PHP'nin çalışan bir sürümünü yüklediğinize göre şimdi istemci kitaplığını yükleme zamanı. İstemci kitaplığı, açık kaynaklı Zend Framework'ün bir parçasıdır ancak bağımsız bir sürüm olarak da indirilebilir. Zend Framework'ün yüklü bir sürümü (1.6 veya daha yeni bir sürüm) varsa Google Data Client Library dahil olduğundan yüklemeyi atlayabilirsiniz. Ancak, çerçevenin en son sürümünü kullandığınızdan emin olmanız, en yeni özelliklere ve hata düzeltmelerine erişebilmenizi sağlayacağından genellikle önerilir.

Çerçevenin tamamını indirdiğinizde yalnızca Google Veri İstemci Kitaplığı'na değil, çerçevenin geri kalanına da erişebilirsiniz. İstemci kitaplığı, Zend Framework'ün tamamına ait birkaç sınıf daha kullanır ancak bunları bağımsız bir indirme paketinde topladığımız için tüm framework'ü indirmeniz gerekmez.

  1. Google Data Client Library dosyalarını indirin. ("Google Data APIs" ifadesini arayın.)
  2. İndirilen dosyaları açın. Dört alt dizin oluşturulmalıdır:
    • demos — Örnek uygulamalar
    • documentation: İstemci kitaplığı dosyalarıyla ilgili dokümanlar
    • library: Gerçek istemci kitaplığı kaynak dosyaları.
    • tests — Otomatik test için birim testi dosyaları.
  3. library klasörünün konumunu PHP yolunuza ekleyin (sonraki bölüme bakın).

İstemci kitaplığı dosyalarına erişebildiğinizden emin olmak için kontrol etme

Son adım, projenizi oluşturduğunuz dizindeki PHP İstemci Kitaplığı dosyalarına başvurabildiğinizden ve bu dosyaları ekleyebildiğinizden emin olmaktır. Bu işlem, PHP'nin yapılandırma dosyasında (php.ini) include_path değişkeni ayarlanarak gerçekleştirilir. include_path değişkeni, Java'daki import ifadesine benzer şekilde, harici sınıfları, kitaplıkları veya dosyaları mevcut komut dosyanıza çeken bir require veya include ifadesi verdiğinizde PHP'nin incelediği bir dizi dizin konumu içerir. İstemci kitaplığı dosyalarının konumunu, include_path içinde önceden ayarlanmış olanlara eklemeniz gerekir. Bu işlem iki şekilde yapılabilir (her ikisi de aşağıda ayrıntılı olarak açıklanmıştır):

  • include_path yönergesini, komut satırından php.ini yapılandırma dosyanızda kalıcı olarak ayarlayın. Bu işlem için kabuk erişimi ve yazma izinleri gerekir.
  • include_path yol değişkenini "dizin başına" düzeyinde ayarlayın. Bu işlem için Apache web sunucusu ve .htaccess dosyaları oluşturma özelliği gerekir.
  • Komut dosyalarınızda ekleme yolunu dinamik olarak ayarlamak için set_include_path() işlevini kullanın. Bu işlev, .php dosyalarınızın her birinde dinamik olarak ayarlanabilir.

php.ini dosyasına kabuk erişiminiz ve yazma izniniz varsa (veya yerel makinenizde kod yazıyorsanız) A ekindeki talimatları uygulamanız yeterlidir. Apache web sunucusunu kullanıyorsanız ve .htaccess dosyaları oluşturabiliyorsanız include_path değişkenini "dizin başına" düzeyinde ayarlayabilirsiniz. Bu, çalıştığınız dizindeki tüm dosyaların istemci kitaplığı dizinine otomatik olarak başvurabileceği anlamına gelir.

PHP yapılandırma seçeneklerini aşağıdaki snippet'te gösterildiği gibi belirtebilirsiniz:

# This works for PHP5 in both Apache versions 1 and 2
<IfModule mod_php5.c>
  php_value include_path        ".:/usr/local/lib/php:/path/to/ZendGdata/library"
</IfModule>

Not: Yapılandırma ayarlarını değiştirme hakkında daha fazla bilgi için PHP Kılavuzu'na bakın.

Sunucunuza kabuk erişiminiz yoksa ve her zaman kullanabileceğiniz .htaccess dosyalarını değiştiremiyor veya oluşturamıyorsanız set_include_path işlevini kullanabilirsiniz. include_path için zaten bir değer ayarlanmış olabileceğini unutmayın. Bu nedenle, yeni değerleri eklemek için aşağıdaki modeli kullanmak, tüm yolu üzerine yazmaktan daha iyi bir seçenek olabilir:

$clientLibraryPath = '/path/to/ZendGdata/library';
$oldPath = set_include_path(get_include_path() . PATH_SEPARATOR . $clientLibraryPath);

Not: set_include_path işlevi hakkında daha fazla bilgi için lütfen PHP kılavuz sayfalarına bakın.

PHP yükleme denetleyicisini çalıştırma

Dahil etme yolunuzun doğru şekilde ayarlandığını doğrulamak için PHP Installation Checker komut dosyasını çalıştırabilirsiniz. Bu dosyanın içeriğini kopyalayıp sunucunuzdaki web'den erişilebilen bir dizinde yeni bir dosyaya yapıştırın ve tarayıcınızdan bu dosyaya gidin. Aşağıdakine benzer bir çıkış görüyorsanız her şey doğru şekilde yapılandırılmıştır ve PHP istemci kitaplığını kullanmaya hazırsınızdır:

php installation checker output ekran görüntüsü

Hata görürseniz (aşağıdaki ekran görüntüsünde olduğu gibi) talimatları uyguladığınızdan emin olun. Uzantılarınız eksik olabilir veya yolunuz hâlâ doğru şekilde ayarlanmamış olabilir. Değişikliklerin geçerli olması için sunucunuzu yeniden başlatmanız gerekebileceğini unutmayın. Bu yalnızca php.ini dosyasını gerçekten değiştiriyorsanız geçerlidir. Aşağıdaki ekran görüntüsünde, include_path ayarının /path/to/nowhere olarak ayarlandığı gösterilmektedir:

php installation checker output ekran görüntüsü

Not: PHP yükleme denetleyicisinin sırayla şunları kontrol ettiğini lütfen unutmayın: (1) Gerekli PHP uzantıları yüklü mü? (2) include_path, PHP istemci kitaplığının dizinine mi işaret ediyor? (3) SSL bağlantıları oluşturulabiliyor mu? Son olarak, YouTube Data API'ye bağlantı oluşturulabiliyor mu? Belirli bir test başarısız olursa kalan testler çalıştırılmaz.

İstemci kitaplığı yüklendiğine göre artık örnekleri çalıştırmayı deneyebilirsiniz.

Örnekleri çalıştırma

Zend/Gdata dizininin kök dizininde, başlamanıza yardımcı olacak örnekler içeren bir demo klasörü bulunur. Bu örneklerden bazıları (ör. demos/Zend/Gdata/Blogger.php ve demos/Zend/Gdata/Spreadsheet-ClientLogin.php) komut satırından çalıştırılacak şekilde tasarlanmıştır ve bunları php /path/to/example ile yürütebilirsiniz. Kalan örnekler hem komut satırından hem de web tarayıcısından çalıştırılabilir. Bunları bir tarayıcıda görüntülemek istiyorsanız web sayfalarını yayınlamak için kullandığınız dizine yerleştirmeniz gerekir. Bu örnekler, Google Verileri uygulaması yazma ve çalıştırma konusunda temel bir fikir verecektir. Ancak daha fazla bilgi edinmek istediğinizde meraklı programcılar için başka kaynaklar da mevcuttur.

Not: Web tabanlı demoları online olarak görmek istiyorsanız lütfen googlecodesamples.com adresini ziyaret edin ve PHP uygulamalarını bulun.

Daha fazla bilgi

İstemci kitaplığının parçası olan sınıflar hakkında bilgi edinmek için en iyi yer, Zend Framework sitesindeki API başvuru kılavuzudur. Açılır listeden Zend_Gdata paketini seçtiğinizden emin olun.

Bu noktada kod yazmaya başlamaya hazırsınız. O halde, harika uygulamalar yazmaya başlayın. Sonuçlarınızı görmek için sabırsızlanıyoruz.

Aşağıdaki hizmetler için PHP geliştirici kılavuzlarını bulabilirsiniz:

PHP istemci kitaplığı açık kaynaklı bir proje olduğundan daha fazla API için destek sürekli olarak eklenmektedir. Her hizmetin kendi destek grubu vardır. Mevcut destek gruplarının listesi için lütfen SSS girişimize bakın.

API çağrılarınızda sorun giderme konusunda yardıma ihtiyacınız varsa Ağ trafiği yakalama araçlarını kullanarak API isteklerinde hata ayıklama ve Google Veri API'leri ile proxy sunucuları kullanma hakkında makaleler mevcuttur. XAMPP'ı Linux'a yükleme ve XAMPP'ı Windows'a yükleme hakkında harici makaleler de mevcuttur. Tüm bu makalelerin yanı sıra Google Data API Tips blogunda PHP istemci kitaplığıyla ilgili yayınları da inceleyin.

Ek A: php.ini yapılandırma dosyanızda PHP yolunuzu düzenleme

PHP yolu, yükleme sırasında ek kitaplıklar ararken PHP'nin arama yaptığı konumların listesini içeren bir değişkendir. PHP'nin makinenizdeki veya sunucunuzdaki Google Data PHP Client Library dosyalarını yükleyip erişebilmesi için bu dosyaların PHP'nin bildiği bir konuma yerleştirilmesi gerekir. Alternatif olarak, dosyaların konumu PHP yolunuza eklenmelidir. php.ini dosyasında yapılan değişikliklerin genellikle sunucunuzun yeniden başlatılmasını gerektirdiğini unutmayın. include_path değişkeninin geçerli değerini, daha önce bahsedilen PHP Bilgisi sayfasına giderek her zaman doğrulayabilirsiniz. İlk tablodaki Loaded Configuration File (Yüklü Yapılandırma Dosyası) hücresini bulun ve sağdaki sütunda yolu bulun.

Not: Komut satırından php kullandığınızı fark ederseniz ek bir yol değişkenini değiştirmeniz gerekebilir. Ek B: PHP'yi komut satırından kullanma başlıklı makaleyi incelediğinizden emin olun.

php.ini dosyasını bulduktan sonra yola eklemek için aşağıdaki adımları uygulayın.

  1. php.ini dosyasını favori metin düzenleyicinizde açın.
  2. PHP yoluna referans veren satırı bulun. Bu satır include_path ile başlamalıdır.
  3. Zend Framework'ü depoladığınız yolu, zaten mevcut olan konumlar listesine ekleyin. Yeni yolunuzun önüne, işletim sisteminiz için belirlenmiş ayırıcıyı (Unix benzeri sistemlerde :, Windows'da ;) ekleyin. Unix benzeri sistemlerde doğru bir yol şu şekilde görünür:
    /path1:/path2:/usr/local/lib/php/library
    Windows'da ise şöyle görünür:
    \path1;\path2;\php\library
  4. Dosyayı kaydedip kapatın.

Not: Mac OS X'te Finder, /etc dizini gibi sistem konumlarındaki dosyalara erişime izin vermez. Bu nedenle, bunları vi veya pico gibi bir komut satırı düzenleyici kullanarak düzenlemek en kolay yol olabilir. Bunu yapmak için pico /path/to/php.ini gibi bir komut kullanın.

Ek B: PHP'yi komut satırından kullanma

PHP sürüm 5'ten itibaren PHP'de "command line interpreter" (komut satırı yorumlayıcısı) için CLI olarak adlandırılan bir komut satırı yardımcı programı mevcuttur. Bu yardımcı program, PHP komut dosyalarının komut satırından çalıştırılmasına olanak tanır. Bu özellik, makinenizde yerel olarak PHP çalıştırıyorsanız ve bazı komut dosyalarını hızlı bir şekilde test etmenin yollarını arıyorsanız yararlı olabilir. Elbette sunucunuzda bu işlem için kabuk erişimi gerekir. PHP'nin genellikle iki ayrı php.ini dosyası kullandığını unutmayın. Bu dosyalardan biri sunucunuzda çalışan PHP'nin yapılandırma seçeneklerini, diğeri ise PHP'nin komut satırından çalışırken kullandığı yapılandırmaları içerir. Komut satırı demo uygulamalarını istemci kitaplığından çalıştırmak istiyorsanız komut satırı php.ini dosyasını da değiştirmeniz gerekir.

Bu dosyayı bulmak için Unix benzeri sistemlerde (Mac OS X, Linux vb.) aşağıdaki komutları yazın:

php -i | grep php.ini

Bu komut, terminalinizde aşağıdaki bilgilerin gösterilmesine neden olmalıdır:

Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini

Not: Gerçek yol konumları (/etc/php...) sisteminizde farklı olabilir.

Ek C: İpuçları ve Çözümler

Bu bölümde, geliştiricilerin PHP ile çalışırken keşfettiği bazı sorunların kısa bir özeti ve uygun çözümler yer almaktadır.

XAMPP'deki dom-xml uzantısıyla ilgili sorun

PHP istemci kitaplığı, XML isteklerini ve yanıtlarını PHP nesnelerine dönüştürmek için DOMDocument sınıflarını kullanır. dom-xml uzantısı, XML işleme ile ilgili sorunlara neden olabilir ve yanlış dönüşümlerle sonuçlanabilir. Bazı geliştiricilerimiz, XAMPP kullanılırken DOMDocument oluşturucusunun PHP sitesinde açıklandığı gibi eski bir işlev çağrısıyla geçersiz kılındığını tespit etmiştir. Bu sorunu düzeltmek için php.ini dosyanızda XML işleme özelliğinin üzerine yazılmadığından emin olun. Yapılandırma dosyanızdaki php_domxml.dll referanslarını kaldırdığınızdan emin olun.

İstemci kitaplığı kullanılırken isteklerin zaman aşımıyla sonuçlanması

İstemci kitaplığını kullanarak YouTube Data API'ye video yükleme gibi oldukça büyük istekler gönderiyorsanız Zend_Http_Client sınıfınızdaki timeout parametresini değiştirmeniz gerekebilir. Bu işlem, örnek oluşturma sırasında $config parametresi iletilerek kolayca yapılabilir. Bu parametre, timeout değerini 10 saniyelik varsayılan değerden farklı bir değere ayarlar:

// assuming your Zend_Http_Client already exists as $httpClient
// and that you want to change the timeout from the 10 second default to 30 seconds

$config = array('timeout' => 30);
$httpClient->setConfig($config);

Bazı barındırma sağlayıcılar, sunucularından https bağlantılarının oluşturulmasına izin vermez.

Bazı barındırma sağlayıcıların, varsayılan sunucularından https bağlantı oluşturmanıza izin vermediğini öğrendik. Aşağıdakine benzer bir hata mesajı alırsanız https bağlantılarınızı güvenli bir proxy üzerinden yapmanız gerekebilir:

Unable to Connect to sslv2://www.google.com:443. Error #110: Connection timed out

Barındırma sağlayıcınız, kullanılacak proxy sunucusunun gerçek adresi hakkında bilgi vermelidir. Aşağıdaki snippet'te, özel proxy yapılandırmasının PHP istemci kitaplığıyla nasıl kullanılabileceği gösterilmektedir:

// Load the proxy adapter class in addition to the other required classes
Zend_Loader::loadClass('Zend_Http_Client_Adapter_Proxy');

// Configure the proxy connection with your hostname and portnumber
$config = array(
    'adapter'    => 'Zend_Http_Client_Adapter_Proxy',
    'proxy_host' => 'your.proxy.server.net',
    'proxy_port' => 3128
);

// A simple https request would be an attempt to authenticate via ClientLogin
$proxiedHttpClient = new Zend_Http_Client('http://www.google.com:443', $config);

$username = 'foo@example.com';
$password = 'barbaz';

// The service name would depend on what API you are interacting with, here
// we are using the Google DocumentsList Data API
$service = Zend_Gdata_Docs::AUTH_SERVICE_NAME;

// Try to perform the ClientLogin authentication using our proxy client.
// If there is an error, we exit since it doesn't make sense to go on.
try {

  // Note that we are creating another Zend_Http_Client
  // by passing our proxied client into the constructor.

  $httpClient = Zend_Gdata_ClientLogin::getHttpClient(
      $username, $password, $service, $proxiedHttpClient);

} catch (Zend_Gdata_App_HttpException $httpException) {

  // You may want to handle this differently in your application
  exit("An error occurred trying to connect to the proxy server\n" .
      $httpException->getMessage() . "\n");

}

Düzeltme Geçmişi

1 Ekim 2008

Jochen Hartmann tarafından güncellendi. Bu güncelleme aşağıdaki değişiklikleri içerir:

  • Komut satırı PHP'ye atıfta bulunan bölümleri bir ek bölümüne taşıyarak web sunucuları için PHP yapılandırmasını daha net hale getirdik.
  • Birden çok php.ini yapılandırma dosyası hakkında not eklendi.
  • include_path'in dinamik olarak nasıl ayarlanacağıyla ilgili bölümler eklendi.
  • Yükleme denetleyici komut dosyasıyla ilgili bölüm eklendi.
  • Online örneklere bağlantı eklendi.
  • XAMPP ve MAMP için bağlantılar eklendi.
  • "İpuçları ve Çözümler" ekini ekledik.