Salih Özovalı’nın Kişisel Blog’u
Kategori: Web Teknolojileri| facebook
23 Ara 2009Ben bu makaleyi yazmadan iki ay kadar önce facebook application nasıl yapılır diye gerçekten çok araştırdım ancak doyurucu bir kaynak bulamadım. Aslında oldukça basit ve sağlam bir mantığı var. Facebook application yapmaya başlamadan önce mantığını anlatalım.
Facebook application yapmanın yolu facebook api’den geçiyor. Facebook api temelde aynı fakat pek çok dil için farklı kütüphaneler bulunuyor. Benim bildikleri PHP, JS, Flash yani Actionscript, C#.net ve muhtemelen daha çok vardır. Ben PHP üzerinde çalıştığım için tabiki php üzerinden anlatacağım konuyu. Ama ilk önce mantığı anlayalım.
Öncelikle facebook üzerinde bir application yaratmamız gerekiyor. Bu konuyu daha önce anlatmıştım http://www.renklibeyaz.com/facebook-application-yapmak.html bu yüzden değinmiyorum. Facebook üzerinde bir url’miz var bizim ornek url’miz apps.facebook.com/ornekapplication/ bu apllication’ın asıl çalıştığı yer ise www.renklibeyaz.com/ornek/ Bizim ilk ihtiyacımız facebook api bunu da buradan indirebilirsiniz.
İndirdiğimiz api içindeki php ve footprints klasörlerini uygulamamızın çalışacağı dizine yani bizde www.renklibeyaz.com/ornek/ dizinine kopyalıyoruz. Şimdi ilk denemizi yapmak için ornek1.php dosyamızı oluşturup aşağıdaki kodu içine yazıyoruz.
require_once 'php/facebook.php';
$appapikey = 'XXXXX';
$appsecret = 'XXXXX;
$facebook = new Facebook($appapikey, $appsecret);
$user_id = $facebook->require_login();
echo "Örnek Benim Facebook id'im $user_id:";
Bu kodda öncelikle api’yi sayfamız çağırdık. Daha sonra api key ve secret key kullanarak bir facebook application sınıfı yarattık. Buradaki apikey ve secret keyleri uygulanızı yarattığınız facebook developer bölümünden alabilirsiniz. Daha sonra apiden ilk isteiğimiz $facebook->require_login() ile yaptık. Bu bize giriş yaptığımız facebook kullanıcı id’mizi verdi. Uygulama her kim erişir ise burada onun kendi facebook id’si görünecektir. Bu örneğe apps.facebook.com/ornekapplication/ornek1.php adresinden ulaşabilirsiniz.
Şimdi bir diyagram ile facebook application nasıl çalışır anlatalım.

Facebook üzerinden apps.facebook.com/ornekapplication adresine ulaştığınızda facebook tüm GET ve POST veriler ile birlikte -hatta kendi de eklediği verilerde dahil- bizim uygulamamızın çalıştığı sunucudan yani www.renklibeyaz.com/ornekapplication sunucusundan istek yapar. İstek yapılan sayfa php ise ki bizim örneğimizde böyle önce facebook apiyi çağırır, sonra bir sınıf yaratır. Daha sonra bu sınıf üzerinde facebook’a bağlanarak istediği sorguları çalıştırır. Tüm api’ye http://wiki.developers.facebook.com/index.php/API adresinden ulaşabilirsiniz. Sorgularımızı gönderdikten sonra FBML ve HTML karışımı bir sayfa döndürürüz. Bu sayfa facebook tarafından okunur ve yorumlanır. FBML etiketleri son çıktı oluşturulmadan önce facebook tarafından derlenir. Son çıktı facebook arayüzü ile birlikte facebook tarafından ekrana basılır. Facebook kendi üzerinden halihazırda bulunan javascript apisini de hiçbir düzenleme yapmadan kullanmanıza olanak tanır. Özel sınıflar örneğin jquery gibi bu arayüzde çalışmaz. Facebook’un bunun için kendi js apisi mevcuttur.
Bu örnekte apiyi kullanarak arkadaşlarımızı listeleyeceğiz.
require_once ‘php/facebook.php’;
$appapikey = ‘XXXXXXX’;
$appsecret = ‘XXXXXXXXX;
$facebook = new Facebook($appapikey, $appsecret);
$user_id = $facebook->require_login();
$ff = $facebook->api_client->friends_get();
for($i=0; $i<10; $i++)
{
$ffBilgi = $facebook->api_client->users_getInfo($ff[$i], array(’first_name’,'last_name’));
echo $ffBilgi[0]['first_name'].’ ‘.$ffBilgi[0]['last_name'].’<br />’;
}
Bu örnekte öncelikle $facebook->api_client->friends_get() ile tüm arkadaşlarımızın uid’lerini $ff dizinine alıyoruz. Daha sonra bu dizinden ilk 10 arkadaşımız için tek tek $facebook->api_client->users_getInfo ile ad soyad bilgilerini alıp ekrana basıyoruz. Örneği apps.facebook.com/ornekapplication/ornek2.php adresinden inceleyebilirsiniz. Bu örneği özellikle 10 kişi ile sınırladım. Eğer büyük bir listeniz varsa api her bilgi isteğinizde facebook’a bağlanıp bilgi isteyecektir ki bu da süreyi uzatır. Facebook application’lar için 9-10sn gibi bir timeout süresi verir. Eğer bu süreyi aşarsanız sayfa zaman aşımına uğrar. Tüm listenizi sorgulayarak bunu deneyebilirsiniz. Peki çözüm nedir? İşte tam bu noktada yardımıza FBML etiketleri yetişir.
Bu örnekte apiyi kullanarak arkadaşlarımızın uid’lerini alacağız ancak bunların adlarını sorgulamayacağız. Bunun yerine fbml tagları ile adlarının hatta profil fotoğraflarının gösterilmesini sağlayacağız.
require_once ‘php/facebook.php’;
$appapikey = ‘XXXXXXX’;
$appsecret = ‘XXXXXXXXX;
$facebook = new Facebook($appapikey, $appsecret);
$user_id = $facebook->require_login();
$ff = $facebook->api_client->friends_get();
for($i=0; $i<sizeof($ff); $i++)
{
echo “<fb:profile-pic uid=\”$ff[$i]\” size=\”small\” linked=\”true\” /> “;
echo “<fb:name uid=\”$ff[$i]\” /><br />\n”;
}
Burada <fb:name uid=”" /> etiketine uid’sini verdiğimiz arkadaşımızın adını hatta profiline bir link çıkarır. İstersek bu etiketin diğer parametrelerini kullanarak link çıkartmama, sadece adını gösterme gibi pek çok değişik biçimde kullanabiliriz. Bu örneğe apps.facebook.com/ornekapplication/ornek3.php adresinden ulaşabilirsiniz. Aynı şey <fb:profile-pic> etiketi için de geçerlidir. Farkettiniz gibi burada tüm arkadaşlarımı listeledim çünkü burada bir timeout kaygım yok. Ben fbml olarak ürettim fbml tag’ları ile gösterilecek metinleri ve profil fotoğraflarını yerleştirmek artık facebook’un işi. İşte bu yüzden fbml kullanmak facebook application için çok önemli.
Şimdilik bu kadar önümüzdeki makalede daha fazla fbml etiketi ve kullanımlarından bahsedeceğim.
Yeşillik olsun ağaçlar kesilmesin falan diye değil heralde. Baktım ki yıllardır profesyonel anlamda çalışıyorum ama yazmadıktan sonra bunları kendimin yaptığına ben bile inanmıyorum. Yani bir nevi profesyonel hayatıma bir şaittir bu site.