Facebook üzerinde uygulama geliştirme

facebook.gif

Öncelikle belirtmek isterim ki Facebook ile olan ilişkim çok da geçmişe dayanmıyor. İlker ve Beyza’dan sıklıkla duyduğum bu siteye, sosyal ağ kavramına olan uzaklığımdan dolayı pek sıcak bakmamıştım. Ama sonunda İlker’in ısrarları ve Nadya’nın daveti üzerine iki hafta kadar önce üye oldum.

İtiraf etmeliyim ki Facebook beklentilerimin oldukça üzerine çıktı. Oldukça hareketli ve çekici yapısı ile beni uzun süre ekran başına bağladı. Hiç ummadığım eski arkadaşlarımı buldum veya onlar beni buldu. İşin ilginci bu insanların pek çoğu siteye düzenli aralıklarla uğruyorlar. Esasında bu durum çok da şaşırtıcı değil, çünkü kanımca Facebook’u bu kadar popüler yapan ve bir o kadar da hareketliliği sağlayan unsurların başında Facebook uygulamaları geliyor.

Facebook uygulaması, çoğunlukla başkaları tarafından yazılmış olan eklentiler. Ne ararsan bulabiliyorsun, nerdeyse yok yok. Oyunlardan fan kulüplerine, fotoğraf albümlerinden bilgilendirme uygulamalarına kadar binlerce çeşit bulunuyor. Bu uygulamaları bir kaç fare tıklaması ile ekleyebiliyor ve kullanabiliyorsunuz. Bu uygulamaların pek çoğu sizin profil sayfalarınız ve arkadaşlarınız ile etkileşimde bulunuyor.

Facebook uygulamalarının yakın bir gelecekte büyük bir pazarlama gücü olacağını tahmin etmek çok da zor değil. Şimdiden daha yeni çıkacak filmlerin, kitapların uygulamalarına rastlamak mümkün. Harry Potter fanlarının etkisi halen sürüyor.

Facebook için uygulama geliştirmek çok da zor değil. Eğer biraz web yazılımları konusunda bilginiz varsa, biraz da öğrenmeye hevesiniz, uykusuz ama keyifli geçirilecek bir kaç gece içinde ana fikri çözmeniz oldukça basit. Facebook’da bu konuda oldukça cömert davranmış. Uygulama geliştirme için hazırladıkları API hakkında oldukça kapsamlı bir dokümantasyon, çeşitli diller için kod örnekleri, bir tartışma platformu ve bir wiki hazırlamışlar.

Uygulama geliştirmek isteyen herkesin öncelikle Developer adlı uygulamayı profillerine yüklemeleri gerekiyor. Bu uygulama ile yeni uygulamanızı sisteme kaydedebilir ve gerekli API anahtarlarını alabilirsiniz. Dokümantasyona, çeşitli diller için istemci kütüphanelerine ve kod örneklerine ise Facebook Developer sayfasından ulaşabilirsiniz. Daha fazla bilgi ve örnekler ise Developer Wiki sayfasında bulunabiliyor. Facebook resmi olarak PHP (4 ve 5) ve Java API kütüphanelerini detekliyor. Fakat siteden Actionscript, Cocoa, ColdFusion, .NET, Perl, Phyton, Ruby ve VB.NET kütüphanelerine ulaşmak mümkün.

Uygulama platformunu oluşturan üç temel teknoloji bulunuyor. Kısaca bunlardan bahsedelim:

Ara Yüz (API) : Facebook sunucuları ile sizin sunucularınız arasındaki iletişim API ile sağlanıyor. Facebook API Rest tabanlı bir iletişim metodu kullanıyor. Yani, Facebook’a erişebilmek için yazılımınızın Facebook sunucularına HTTP POST veya GET isteğinde bulunması gerekiyor. API kullanarak kimlik denetimini ve Facebook’da yer alan arkadaş, profil v.s. bilgilerine erişimi gerçekleştiriyorsunuz.

Sorgu (FQL) : FQL Facebook’ta yer alan ve API ile ulaşabileceğiniz bilgileri SQL’e benzeyen bir dille kolayca sorgulamanıza imkan veriyor.

Biçimleme Dili (FBML) : HTML’e benzeyen, aslında pek çok HTML komutunun yanı sıra bir takım Facebook’a özel öğelerin bulunduğu bir biçimleme dili. Bu dili kullanarak kullanıcılarınıza alışkın oldukları bir ara yüz tanımlayabiliyor ve pek çok Facebook özelliklerine kolaylıkla ulaşabiliyorsunuz.

Basitçe uygulama mimarisinden de bahsetmek istiyorum. Bu konuyu bulmak biraz zamanımı aldığı için başta epeyce bocalamıştım. Çünkü pek alışık olmadığımız bir mimarisi var. Öncelikle uygulamanız kendinize ait bir sunucu üzerinde çalışıyor. Bunun için kullanacağınız dili destekleyen bir servis sağlayıcısına ihtiyacınız var. Eğer halen bir sunucu barındırma hizmetiniz yoksa size uzun zamandır kullandığım ve memnun olduğum Hostgator adlı firmayı önerebilirim.

Uygulamanızın Facebook’ta çalıştığı ana kısma canvas adı veriliyor. Kullanıcılarınız uygulamanıza üye olduğunda ve her girişlerinde bu canvas sayfasına geliyor. Canvas esasında Facebook’da bulunan ve sizin uygulamanızı çevreleyen bir sayfa.

Kullanıcınız uygulamanıza girdiğinde kullanıcınızın tarayıcısı Facebook sunucularına bir istekte bulunuyor. Facebook bu isteği geri planda sizin sunucularınıza yolluyor. Sunucunuzda çalışan yazılımınız API ile Facebook sunucularına bağlanıp kimlik sorgulaması, kullanıcı sorguları v.b. gibi gerekli işlemleri yaptıktan sonra FBML oluşturarak bunu ilk sorguya yanıt olarak Facebook sunucularına gönderiyor. Facebook ise FBML formatındaki bu yanıtınızı işleyip kullanıcının tarayıcısına gönderiyor.

Aslında bu işlem API kullanıcıları için çok da yabancı bir yöntem değil. Sayfada bulunan bir DIV elementinin içini AJAX ile doldurmaya benziyor. Farkı, sizin göndermiş olduğunuz FBML Facebook sunucuları tarafından işlenerek ve canvas içine yerleştirilerek kullanıcıya gönderiliyor. Buradaki “işleme” kelimesinin altını çizmek istiyorum. Bu işlem sırasında özel FBML kodları HTML’e dönüştürüldüğü gibi yasaklı olan bazı elementler de çıkarılıyor. Yakın zamana kadar bu yasaklı elementlere Javascript’te dahildi. Fakat yakın zamanda çıkarılan FBJS ile javascript kısıtlı da olsa destekleniyor. Bu sayede artık yazılımınızda AJAX kullanmanız mümkün. FBJS kullanmak isteyenlere bir uyarı, javascript’in kötüye kullanılabilmesi nedeni ile kullanılan FBJS pek çok Javascript özellik ve yöntemlerini değiştirerek kullanıyor. Bu nedenle oldukça dik bir öğrenme eğrisine sahip. Özellikle DOM nesnelerinin işlenmesinde tüm özellikler yerlerini metotlara bırakmışlar. Bir çok metot ise güvenlik nedeniyle kullanılamıyor. Bu konudaki detaylı bilgiye FBJS sayfasından ulaşabilirsiniz.

Uygulamanızdan kullanıcı profiline erişim ise daha farklı bir yöntem kullanıyor. Profil sayfaları Facebook tarafından ön belleklendiği için, bu bilgileri API yardımı ile sunucuya itmeniz (Push) gerekiyor. Diyelim uygulamanız kullanıcının sayfasına bir kutu ekleyerek içinde kullanıcı ile ilgili bir takım bilgiler gösterecek. Profil yüklenirken Facebook, sunucularının sizin sunucularınıza bağlanarak bu bilgiyi alması yerine, daha önce uygulamanızın Facebook’a gönderdiği FBML bloğunu kullanıyor. Bu mimarinin, her ne kadar alışık olunmasa da, belirgin avantajları var. Hem her profil ziyaretinde sizin sunuculara istekte bulunarak yük bindirmiyor, hem de profilin daha hızlı yüklenmesini sağlıyor. Tabi ki dezavantaj olarak profilde yer alan bilgilerin değişmesi gerektiğinde uygulamanızın API ile profili güncellemesi gerektiğini gösterebiliriz. Neyse ki çoğu uygulamada bu uygulama sayfasından tetikleniyor. Geri kalan kısım içinse düzenli olarak güncelleme yapan bir uygulama mimarisi geliştirmeniz gerekiyor.

Profil sayfalarında Javascript kullanmak isteyenlere bir uyarı daha. Profil sayfalarında Javascript çok daha kısıtlı olarak izin verilmiş. Bu yüzden mecbur kalmadıkça kullanmamanızı tavsiye ederim.

Eğer zaman bulabilirsem Facebook uygulamaları konusunda detaya girmek istiyorum. Ama bu günlük bu kadar.

“Facebook üzerinde uygulama geliştirme” için 10 Yorum yapılmış.


  1. 1 Basak

    Tolgacimmmmm,gercekten sana inanamiyorum..sanirim seni 15 senedir gormuyorum ama genius ligindan hicbirsey kaybetmemissin:)

  2. 2 habib

    Tolga bey yazınız için teşekkür ederim, güzel olmuş.
    Benim bir sorunum vardı eğer yardımcı olursanız çok sevinirim. Sorunum; Türkçe karakterler de, karakterler bozuk çıkıyor, tarayıcının dil kodlamasında sorun bunu uygulama üzerinden nasıl çözebilirim.
    teşekkür ederim.

  3. 3 tolga

    Merhaba Habib Bey,

    Facebook dil kodlaması olarak UTF-8 kullanıyor. Bu sebeple uygulamanızın da UTF-8 dil kodlaması kullanıyor olması gerek. Bunun için en doğrusu sayfaları ve varsa veritabanını UTF-8 kullanarak hazırlamanız.

    Bir alternatif olarak da bütün gönderdiğiniz bilgileri göndermeden hemen önce iconv, PHP kullanıyorsanız Multibyte String veya benzeri bir fonksiyon ile UTF-8′e çevirmek. Fakat tahminim bunu yapmak biraz daha zor olacaktır.

    İyi çalışmalar.

  4. 4 fb_developer

    @habib ve @tolga bey, Notepad++ kullanarak sayfalarınızı utf-8 olarak encode ederek, veritabanınında utf-8 olarak yükleyerek sorunu çözebilirsiniz.

    Facebook üzerinde uygulama geliştirme adına Türkçe bir derleme görmek güzel, devamını dilerim. Teşekkürler.

  5. 5 Arama Motoru

    Bende bu bilgilerden kendime bir application tasarladım. saolasınız sizin gibi insanların olması bizi yüreklendiriyor. çok aramıştım türkçe kaynak bu application yazmaya dair ama birçok kişi bu işi paraya çevirme derdinde parayla app. yazar hale gelmişler. Çok saçma. Sizi tebrik ediyorum.

    Arama Motoru App. : http://apps.facebook.com/aramamotoru/
    Günün Sözü App. : http://apps.facebook.com/gunun-sozu/

  6. 6 Onur Erkan

    Dil için sayfanın başına

    header(’Content-Type: text/html; charset=iso-8859-9′);

    headerı kullanabilirsiniz facebook bu header a izin veriyor.

  7. 7 holyX

    Teşekkürler güzel bir giriş yazısı. Temel açıklamalar konusunda nedense türkçe kaynak sıkıntısı var.
    Çalışmalarınızın devamı dileğiyle…
    Başarılar.

  8. 8 iLkerjaN

    iyi bir makale olmuş spesiyal tenks :)

  1. 1 Facebook’a Application Geliştirme - Başlangıç ve Kurulum | alialtugkoca
    16 Kasım 2007 13:28 yazısı için Pingback tarafından yapılan yorum
  2. 2 Facebook’a Application Geliştirme - Başlangıç ve Kurulum - Elektronik ve Bilişim Dünyası
    06 Mayıs 2008 18:50 yazısı için Pingback tarafından yapılan yorum

Yorum yapın