Google Verileri PHP İstemci Kitaplığı'nı Kullanmaya Başlama

Uyarı: Bu sayfa, Google'ın eski API'leri olan Google Veri API'leriyle ilgilidir. Bu sayfalar, çoğu yeni API'lerle değiştirilen Google Veri API'leri dizininde listelenen API'lerle ilgilidir. Belirli bir yeni API ile ilgili bilgi edinmek için yeni API'nin belgelerine bakabilirsiniz. Yeni bir API ile istekleri yetkilendirme hakkında bilgi için Google Hesaplarında 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 yazmıştır)

Giriş

Google Veri PHP İstemci Kitaplığı, Google Veri API'leri ile etkileşimde bulunmanıza olanak tanıyan güçlü bir sınıf koleksiyonudur. Diğer istemci kitaplıklarımızdan farklı olarak, popüler Zend Çerçevesi'nin bir parçası olarak paketlenmiştir ancak ayrı olarak da indirilebilir. Diğer istemci kitaplıklarımıza benzer şekilde açık kaynaklı olan bu proje, basit ve etkili olacak şekilde tasarlanmıştır. Böylece projelerinize hızlı bir şekilde başlayabilirsiniz.

Yükleme Öncesi

PHP, geliştirme makinenize veya web sunucunuza zaten yüklenmiş olabilir. Bu nedenle, ilk adım bu bilgiyi doğrulamak ve PHP sürümünün istemci kitaplığı için kullanılabilecek kadar güncel olduğundan emin olmaktır. Bunu kontrol etmenin en kolay yolu, sunucunuzdaki web'de erişilebilir bir dizine yeni bir dosya yerleştirmektir. Dosyaya aşağıdaki bilgileri yazın:

<?php phpinfo(); ?>

Daha sonra, uygun izinleri belirleyerek web'den erişilebildiğinden emin olun ve tarayıcınızdan konumu ziyaret edin. PHP yüklüyse ve sunucunuz PHP sayfalarını oluşturabiliyorsa aşağıdaki ekran görüntüsüne benzer bir şey görürsünüz:

GP bilgi sayfası ekran görüntüsü

Ekran görüntüsünde PHP bilgi sayfası gösteriliyor. Bu sayfada, yüklü olan AdWords sürümü (bu örnekte 5.2.6), uzantılar etkin olup olmadığı ('Komutu Yapılandır' 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österilmektedir. 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 veya yükseltmeniz gerekir. Aksi takdirde sonraki bölümü atlayıp PHP İstemci Kitaplığı'nı yüklemeye devam edebilirsiniz.

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 yükleniyor

Yükleme işlemi platformdan platforma farklılık gösterir. Bu nedenle, yükleme sırasında kendi platformunuzun talimatlarını uygulamanız önemlidir. Başlamadan önce, Apache web sunucusu ve MySQL veritabanını da içeren önceden yüklenmiş paketlerin PHP'de popülerlik kazandığını belirtmekte fayda var. Windows, Mac OS X ve Linux için XAMPP projesi vardır. Mac OS X kullanıcıları da MAMP projesini kullanma seçeneğine sahiptir. Bu paketlerin her ikisi de PHP'de OpenSSL'yi destekler (kimlik doğrulaması yapılmış feed'lerle etkileşimde bulunmak için gereklidir).

PHP'yi aşağıdaki adımları uygulayarak yüklerseniz OpenSSL desteğini de yüklediğinizden ve etkinleştirdiğinizden emin olun. Bununla ilgili ayrıntılı bilgiyi PHP sitesinin OpenSSL bölümünde bulabilirsiniz. Aşağıdaki bölümlerde PHP'nin kendi başına nasıl yükleneceği açıklanmaktadır.

Windows'da

PHP'yi Windows'a yüklemenin veya yükseltmenin en kolay yolu, PHP indirmeler sayfasında bulunan PHP yükleyicidir.

  1. PHP'nin en yeni sürümüne karşılık gelen PHP yükleyici seçeneğini belirleyin (Windows ikili programları bölümünde) ve indirmesine izin verin.
  2. Yükleyiciyi açın ve yükleme sihirbazının talimatlarını uygulayın.
  3. Sihirbaz sizden sisteminizde yüklü olan web sunucusunu seçerek sunucuyu PHP ile çalışacak şekilde yapılandırır.
  4. Yukarıdaki bölümde özetlenen adımları uygulayarak kurulumunuzu kontrol edin.

Mac OS X'te

PHP, OS X'e dahildir ancak PHP'yi kullanmadan önce PHP'nin en son sürümüne geçmeniz gerekir. Yükseltme yapmak için birkaç ücretsiz ikili program paketinden istediğinizi yükleyebilir veya paketi kendiniz derleyebilirsiniz. Ayrıntılar için Mac OS X'te yükleme hakkındaki PHP dokümanlar sayfasını inceleyin.

OS X'i yükledikten veya başka bir şekilde kurduktan sonra, bu dokümanın yükleme öncesi bölümünde özetlenen adımları uygulayarak yükleme işleminizi kontrol edin.

Linux'ta

Linux dağıtımına bağlı olarak, PHP kurulumu için yerleşik veya kullanımı kolay bir kurulum seçeneği olabilir. Örneğin, Ubuntu'da bir paket yöneticisi kullanabilir veya terminale aşağıdakileri yazabilirsiniz:

sudo apt-get install php5

Linux dağıtımınızda paketlenmiş yükleme yoksa kaynak koddan yüklemeniz 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 sunuculara yönelik talimatlar da vardır.

Google Verileri 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ükleyebilirsiniz. İstemci kitaplığı, açık kaynak Zend Çerçevesi'nin bir parçasıdır ancak bağımsız sürüm olarak da indirilebilir. Zend Framework sürümünü zaten yüklediyseniz (1.6 veya sonraki bir sürüm) Google Veri İstemcisi Kitaplığı dahil olduğundan yükleme işlemini atlayabilirsiniz. Bununla birlikte, çerçevenin en yeni sürümünü kullandığınızdan emin olmanız, en yeni özelliklerin ve hata düzeltmelerinin tümüne sahip olmanızı garanti eder. Bu nedenle, genellikle bunu yapmanız önerilir.

Tüm çerçeveyi indirirseniz yalnızca Google Veri İstemcisi Kitaplığı'na değil, çerçevenin geri kalanına da erişebilirsiniz. İstemci kitaplığının kendisinde Zend Çerçevesi'nin parçası olan birkaç sınıf daha kullanılıyor. Ancak, bunları bağımsız bir indirme halinde paketlediğimiz için tüm çerçeveyi indirmenize gerek yoktur.

  1. Google Veri İstemcisi Kitaplığı dosyalarını indirin. (Söz konusu sayfada "Google Veri API'leri"ni arayın.)
  2. İndirilen dosyaların sıkıştırmasını açın. Dört alt dizin oluşturulmalıdır:
    • demos - Örnek uygulamalar
    • documentation - İstemci kitaplığı dosyaları için dokümanlar
    • library: Gerçek istemci kitaplığı kaynak dosyaları.
    • tests - Otomatik test için birim test dosyaları.
  3. library klasörünün konumunu PHP yolunuza ekleyin (sonraki bölüme bakın)

İstemci kitaplığı dosyalarına erişip erişemediğinizi kontrol etme

Son adım, projenizi oluşturduğunuz dizindeki PHP İstemci Kitaplığı dosyalarını referans gösterip eklediğinizden emin olmaktır. Bu işlem, PHP'nin yapılandırma dosyasındaki (php.ini) include_path değişkeni ayarlanarak yapılır. 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 yayınladığınızda PHP'nin incelediği çeşitli dizin konumunu içerir. İstemci kitaplığı dosyalarının konumunu, include_path cihazınızda zaten belirlenmiş olan öğelere eklemeniz gerekir. Bu, iki şekilde gerçekleştirilebilir (bu işlemlerin her ikisi de aşağıda ayrıntılı olarak açıklanmıştır):

  • php.ini yapılandırma dosyanızda include_path yönergesini komut satırından 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 ayarlama; Apache web sunucusu ve .htaccess dosyaları oluşturma olanağı gerekir.
  • Komut dosyalarınızdaki dahil etme yolunu dinamik olarak ayarlamak için set_include_path() işlevini kullanın. Her bir .csv dosyasının içinde dinamik olarak ayarlanabilir.

php.ini dosyasına kabuk erişiminiz ve yazma izniniz varsa (veya yerel makinenizde kod yazıyorsanız) ek A'daki 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, üzerinde çalıştığınız dizindeki tüm dosyaların otomatik olarak istemci kitaplığı dizinine 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 edinmek için PHP Kılavuzu'na bakın.

Sunucunuza kabuk erişiminiz yoksa ve üzerinde değişiklik yapamıyor veya oluşturamıyorsanız .htaccess dosyalarını her zaman set_include_path işlevini kullanabilirsiniz. include_path için belirlenmiş bir değeriniz olabilir. Bu nedenle, tüm yolun üzerine yazmak yerine yeni değerleri eklemek için aşağıdaki modeli kullanmak iyi bir fikir olabilir:

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

Not: set_include_path işleviyle ilgili daha fazla ayrıntı için lütfen PHP manuel sayfalarına bakın.

PHP Yükleme Kontrolü'nü çalıştırma

Dahil etme yolunuzun düzgün şekilde ayarlandığını doğrulamak için PHP Yükleme Denetleyicisi komut dosyasını çalıştırabilirsiniz. Bu dosyanın içeriğini kopyalayıp sunucunuzdaki web'de erişilebilir bir dizinde yeni bir dosyaya yapıştırarak tarayıcınızdan bu dosyaya gidin. Aşağıdakine benzer bir çıkış görürseniz her şey düzgün şekilde yapılandırılmış ve PHP İstemci Kitaplığı'nı kullanmaya hazırsınız demektir:

php yükleme denetleyicisi çıktısı ekran görüntüsü

Hata görürseniz (aşağıdaki ekran görüntüsünde olduğu gibi) talimatlara uyduğunuzdan emin olun. Uzantılarınız eksik olabilir veya yolunuz doğru şekilde ayarlanmamış olabilir. Değişikliklerin geçerli olması için sunucunuzu yeniden başlatmanız gerekebileceğini unutmayın. Bu durum, yalnızca php.ini dosyasını değiştiriyorsanız geçerlidir. Aşağıdaki ekran görüntüsünde include_path, /path/to/nowhere olarak ayarlanmıştır:

php yükleme denetleyicisi çıktısı 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üklenmiştir, (2) include_path, PHP İstemci Kitaplığı dizinini işaret eder, (3) SSL bağlantıları yapılabilir ve son olarak YouTube Data API'ye bağlantı oluşturulabilir. Belirli bir test başarısız olursa kalan testler çalıştırılmaz.

Artık istemci kitaplığı yüklendiğine göre örnekleri çalıştırmanın zamanı geldi.

Örnekleri çalıştırma

Zend/Gdata dizininin kökünde demolar klasörü bulunur. Bu örnekler, başlamanıza yardımcı olacak örneklerdir. Bu örneklerden bazıları, demos/Zend/Gdata/Blogger.php ve demos/Zend/Gdata/Spreadsheet-ClientLogin.php gibi komut satırından çalışacak şekilde tasarlanmıştır. Bu örnekleri php /path/to/example ile yürütebilirsiniz. Kalan örnekler hem komut satırından hem de bir 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ştirilmelidir. Bu örnekler, Google Veri uygulaması yazma ve çalıştırma konusunda temel bir fikir vermekle birlikte, daha hazır olduğunuzda araştırmacı programcı 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ı arayın.

Daha Fazla Bilgi

İstemci kitaplığı kapsamındaki sınıflar hakkında bilgi aramak için en iyi yerler, Zend Çerçevesi sitesindeki API referans kılavuzudur. Açılır menüden Zend_Gdata paketini seçtiğinizden emin olun.

Bu noktada kodlamaya başlamaya hazırsınız. Haydi, mükemmel uygulamalar yaz. 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 İstemci Kitaplığı bir açık kaynak projesi olduğundan, daha fazla API desteği sürekli olarak eklenmektedir. Her hizmetin kendi destek grubu vardır. Mevcut destek gruplarının listesi için SSS sayfamıza göz atın.

API çağrılarınızla ilgili sorunları giderme konusunda yardıma ihtiyacınız varsa ağ trafiği yakalama araçlarını kullanarak API isteklerini ayıklama ve Google Veri API'leriyle proxy sunucuları kullanma hakkındaki makaleleri bulabilirsiniz. XAMPP'yi Linux'a yükleme ve XAMPP'yi Windows'a yükleme konulu makalelerimiz bulunmaktadır. Bu makalelerin tümüne ek olarak, Google Veri API'si İpuçları blogunda PHP İstemci Kitaplığı ile ilgili yayınlara göz atmayı unutmayın.

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

PHP yolu, yükleme sırasında ek kitaplıklar ararken PHP'de arama yapan konumların listesini içeren bir değişkendir. PHP'nin makinenizde veya sunucunuzda Google Verileri PHP İstemci Kitaplığı dosyalarını yükleyip bunlara erişebilmesi için bu dosyaların PHP'nin bildiği bir konuma yerleştirilmesi gerekir. Alternatif olarak, dosyaların konumunun PHP yolunuza eklenmesi gerekir. php.ini dosyasında yapılan değişikliklerin genellikle sunucunuzun yeniden başlatılmasını gerektirdiğini unutmayın. Daha önce bahsedilen PHP Bilgi sayfasına giderek include_path değişkeninin mevcut değerini istediğiniz zaman doğrulayabilirsiniz. İlk tabloda Yüklenen Yapılandırma Dosyası hücresini bulun ve sağdaki sütunda bulunan yolu bulun.

Not: Komut satırından CR kullandığınızı fark ederseniz başka bir yol değişkeni değiştirmeniz gerekebilir. Ek B: Komut satırından PHP kullanma konusunu inceleyin.

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, include_path ile başlamalıdır.
  3. Zend Framework'ü depoladığınız yolu mevcut işletim sistemlerinin listesine ekleyin. Bunu yaparken yeni yolunuzu işletim sisteminize özel olarak ayrılmış ayırıcıyla (Unix benzeri sistemlerde :, Windows'da ;) bekleyin. Unix benzeri sistemlerde doğru yol, aşağıdaki gibi görünür:
    /path1:/path2:/usr/local/lib/php/library
    Windows'da, aşağıdaki gibi görünür:
    \path1;\path2;\php\library
  4. Dosyayı kaydedin ve kapatın.

Not: Finder, Mac OS X'te, /etc dizini gibi sistem konumlarındaki dosyalara erişime izin vermez. Dolayısıyla, bunları vi veya pico gibi bir komut satırı düzenleyicisi kullanarak düzenlemek en kolay yöntem olabilir. Bunun için pico /path/to/php.ini gibi bir komut kullanın.

Ek B: Komut satırından PHP kullanma

PHP sürüm 5'ten itibaren, PHP'de "komut satırı çevirmeni" için KSA olarak adlandırılan bir komut satırı yardımcı programı bulunmaktadır. Bu yardımcı programın kullanılması, cp komut dosyalarının komut satırından çalıştırılmasına olanak tanır. Bu işlevin faydalı olabileceği durumlar, makinenizi yerel olarak makinenizde çalıştırıyorsanız ve bazı komut dosyalarını hızlı bir şekilde test etmenin yollarını arıyorsanız geçerlidir. Elbette sunucunuzda bunun için kabuk erişimi gerekir. Dikkat edilmesi gereken önemli bir nokta, PHP'nin genellikle iki ayrı php.ini dosyası kullanmasıdır. Bunlardan biri sunucunuzda çalışan PHP için yapılandırma seçeneklerini, diğeri ise PHP'nin komut satırından çalışırken kullandığı yapılandırmalar içerir. İstemci kitaplığından komut satırı demo uygulamalarını çalıştırmak istiyorsanız komut satırı php.ini dosyasını da değiştirmeniz gerekir.

Yerini bulmak için Unix benzeri sistemlere (Mac OS X, Linux ve diğerleri) aşağıdaki komutları yazın:

php -i | grep php.ini

Bu komut, terminalinizde aşağıdaki bilgilerin gösterilmesine neden olur:

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

Not: Elbette gerçek yol konumları (/etc/php...) sisteminizde değişiklik gösterebilir.

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

Bu bölümde, geliştiricilerin PHP ile çalışırken karşılaştıkları bazı sorunların ve uygun çözümlerin kısa bir özeti 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şlemeyle ilgili sorunlara yol açabilir ve yanlış dönüşümlere neden olabilir. Geliştiricilerimizden bazıları, XAMPP kullanırken DOMBelge oluşturucunun PHP sitesinde açıklandığı gibi daha eski bir işlev çağrısının geçersiz kılındığını keşfetmiştir. Bu sorunu düzeltmek için php.ini dosyanızda XML işlemenin üzerine yazılmadığından emin olun. Yapılandırma dosyanızdan php_domxml.dll referansını kaldırdığınızdan emin olun.

İstemci kitaplığı kullanılırken istekler zaman aşımına uğrar

Oldukça büyük istekler gerçekleştirmek için YouTube Data API'ye video yüklemek gibi istemci kitaplığını kullanıyorsanız Zend_Http_Client sınıfınızdaki timeout parametresini değiştirmeniz gerekebilir. Örnekleme sırasında $config parametresi ileterek bu işlemi kolayca yapabilirsiniz. Bu parametre, timeout değerini 10 saniye varsayılanından 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ı, kendi sunucularından https bağlantıları kurulmasına izin vermez

Bazı barındırma sağlayıcılarının, varsayılan sunucularından https bağlantıları yapmanı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 sunucunun gerçek adresiyle ilgili bilgi içermelidir. Aşağıdaki snippet'te, özel proxy yapılandırmasının PHP İstemci Kitaplığı ile 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 anlamına gelen bölümleri bir eke taşıyarak web sunucuları için PHP yapılandırmasını daha anlaşılır hale getirdik.
  • Birden çok php.ini yapılandırma dosyasıyla ilgili not eklendi.
  • Include_path öğesinin dinamik olarak nasıl ayarlanacağıyla ilgili bölümler eklendi.
  • Yükleme denetleyicisi komut dosyasına bölüm eklendi.
  • Online örneklere bağlantı eklendi.
  • XAMPP ve MAMP bağlantıları eklendi.
  • Bir "İpuçları ve Çözümler" eki eklendi.