Facebook

Facebook ve Twitter Otomatik Durum Güncelleme

Posted in Facebook, Yazılım on Ocak 12th, 2011 by Hüseyin Cevizci – Be the first to comment

Facebook’ta ve Twitter’de otomatik post için kısaca şu şekilde bir akış gerekli:

  • Önce Twitter ve Facebook’taki “developer” sayfalarına girip proje için uygulamalar yaratılır.
  • Yaratılan uygulamalardaki “key” ve “secret” bilgileri kaydedilir.
  • Kendi sitenizin uygun bir yerinde kullanıcılardan bu sayfalara post yapılabilmesi için gerekli izin alınır. Facebook için bu izin: “publish_stream
  • Bu iznin alınması için üç taraflı bir yapı kurulur.
  • İlgili sosyal ağ sitesinin izin sayfası (bir popup da olabilir) uygulamanıza ait “key” ve “secret” leri içerecek şekilde açılır.
  • Kullanıcı bu popup’da login olur ve ilgili izinleri verir.
  • Bu izinler karşılığında sosyal ağ siteleri (Facebook , Twitter, FriendFeed) sizin belirlediğiniz bir sayfaya bir kod gönderir. Facebook için bu kodun adı: “access_token
  • Siz de bu kod yardımıyla otomatik post işlemini kullanıcıya bir daha sormadan gerçekleştirirsiniz.

Sosyal ağ siteleri farklı iletişim kurallarına ve yapılarına sahip. Dolayısıyla aşağıdaki dökümanlar iyi incelenmeli:

Facebook:

http://developers.facebook.com/docs/authentication/permissions

http://developers.facebook.com/docs/reference/rest/stream.publish/

Twitter:

http://dev.twitter.com/doc/post/statuses/update

FQL (Facebook Query Language) İle Sorgu Yapma

Posted in Facebook, Javascript, Yazılım on Temmuz 27th, 2010 by Hüseyin Cevizci – Be the first to comment

Facebook’un kendi sorgu dili olan FQL ile Facebook veritabanına sorgu yapabiliyoruz. Sorgu yapabileceğimiz tabloları ve alanları Facebook resmi kaynak dökümanlarında inceleyebiliriz. Şimdi bir FQL sorgusuyla, kullanıcının Facebook’taki bazı temel bilgilerine nasıl ulaşacağımıza bakalım.

Önce FB.api fonksiyonuyla kütüphaneye erişiyoruz.

FB.api('/me', function(response) {
}

Bu fonksiyonun döndüğü sonuç değişkeninde, bağlı kullanıcının Facebook ID değeri bulunuyor. Oluşturduğumuz sorguda Facebook ID değerini kullanıyoruz:

var sorgu= FB.Data.query('select name, hometown_location, sex, pic_square from user where uid={0}', response.id);

Sorguyu wait metoduyla çalıştırıp, sistemin fonksiyon sonuç dönene kadar beklemesini sağlıyoruz.

sorgu.wait(function(rows){
});

Ardından da sorgudan gelen sonuçları ayrıştırıp sayfaya yazıyoruz.

document.getElementById('divBilgiler').innerHTML =
"İsminiz: " + rows[0].name + ",<br/> Cinsiyetiniz: " + rows[0].sex + ",<br/> Resminiz: <br/>" + "<img src='" + rows[0].pic_square + "'></img>";

Fonksiyonumuzun tamamı şu şekilde:

function fqlSorgu(){
FB.api('/me', function(response) {
  var sorgu= FB.Data.query('select name, sex, pic_square from user where uid={0}', response.id);
  sorgu.wait(function(rows) {
    document.getElementById('divBilgiler').innerHTML =
"İsminiz: " + rows[0].name + ",<br/> Cinsiyetiniz: " + rows[0].sex + ",<br/> Resminiz: <br/>" + "<img src='" + rows[0].pic_square + "'></img>";
    });
  });
}

Örnek sayfayı şurada görebiliriz: http://www.cebirci.com/demo/FB_FQL

Facebook API ile otomatik durum güncelleme

Posted in Facebook, Javascript, Yazılım on Temmuz 21st, 2010 by Hüseyin Cevizci – 7 Comments

Sitemize giriş yapmış birinin, Facebook’taki durumunu otomatik olarak nasıl güncelleyeceğimize bakalım.  Durum güncellemesi yapabilmek için kullanıcının sitemize Facebook Connect ile bağlanması gerekmektedir. Bu entegrasyonun nasıl yapılacağını Graph API ile Facebook Connect – 1 yazımızda paylaşmıştık.

Amacımız kullanıcının Facebook sayfasında şu şekilde bir durumu otomatik olarak yayınlamak:

Facebook Api ile Otomatik Durum Güncelleme

Öncelikle kullanıcıdan gerekli izinleri almamız gerekiyor. İzin almak için login-buton’unda perms özelliğine alacağımız izinleri ekleriz. Bu örnekte kullanıcıdan duvarında yazı yayınlama izini isteyeceğiz. Bu izini isteyecek publish_stream değişkenini ekliyoruz.


<fb:login-button autologoutlink="true" perms="publish_stream"></fb:login-button>

Ardından otomatik durum güncelleyecek kodu sayfamıza ekleyelim:

function statuGuncelle(){
var body = "cebirci.com'da 'Facebook API ile otomatik Statü güncelleme' yazısını inceliyor.";
FB.api('/me/feed', 'post', { message: body }, function(response) {
if (!response || response.error) {
alert('Hata Oluştu');
} else {
alert('Duvara eklenen Post ID: ' + response.id);
}
});
}

Örnek sayfayı şurada görebiliriz: http://www.cebirci.com/demo/FB_DurumGuncelleme

Graph API ile Facebook Connect

Posted in Facebook, Javascript, Yazılım on Temmuz 8th, 2010 by Hüseyin Cevizci – 7 Comments

Geçtiğimiz aylarda Facebook yeni API’sini duyurmuştu. Graph API isimli bu arabirim beraberinde yeni kullanım şekilleri de getirdi. Ayrıca eski API’de bulunan “Facebook Connect” entegrasyonu ve uygulama izinleri gibi kısımlar da daha güçlü ve kolay bir altyapıya oturtuldu. Bu yazıda kısaca Graph API’ nin Facebook Connect entegrasyonunda nasıl kullanıldığından bahsedelim.

Örnek sayfayı şurada görebiliriz: http://www.cebirci.com/demo/FB_GraphApi

Öncelikle, API Anahtarı alabilmek için bir Facebook uygulaması yaratmak gerekiyor. Buradan uygulama yaratabiliriz. Veya daha önce yarattıysak API Anahtarımızı aşağıdaki kodda xxxxxxxxxx yazan yere kopyalayım.

<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({appId: 'xxxxxxxxxx', status: true, cookie: true, xfbml: true});
};
(function() {
    var e = document.createElement('script');
    e.type = 'text/javascript';
    e.src = document.location.protocol +
    '//connect.facebook.net/tr_TR/all.js';
    e.async = true;
    document.getElementById('fb-root').appendChild(e);
}());

Yukarıdaki kodu sayfamızda body tagleri arasına ekliyoruz. Bu kod parçacığını ekleyerek Facebook Javascript SDK ‘yı sayfamıza asenkron şekilde yüklüyoruz. Böylece sayfadaki diğer elementlerin bu yüklemeyi beklemesini engelliyoruz. Ayrıca FB.init fonksiyonunun detaylarına da buradan ulaşabiliriz.

Html Tag’imizi şu şekilde düzenliyoruz ki FBML kontrollerini sayfamızda kullanabilelim:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">

Şimdi sırada login, logout ve sessionChange gibi olayları canlandırmak için FB.Event.subscribe metodunu kullanacağız. Kodu şu şekilde yeniden düzenliyoruz:

<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
 FB.init({appId: 'xxxxxxxxxx', status: true, cookie: true, xfbml: true});
 /* Bütün olaylar tanımlanıyor */
 FB.Event.subscribe('auth.login', function(response) {
    // cevap geldiğinde çalışacak kod
    login();
 });
 FB.Event.subscribe('auth.logout', function(response) {
    // cevap geldiğinde çalışacak kod
    logout();
 });

 FB.getLoginStatus(function(response) {
 if (response.session) {
    // login olmuş ve bağlanmış kullanıcı
    login();
 }
 });
};
(function() {
    var e = document.createElement('script');
    e.type = 'text/javascript';
    e.src = document.location.protocol +
    '//connect.facebook.net/tr_TR/all.js';
    e.async = true;
    document.getElementById('fb-root').appendChild(e);
}());

Böylece kullanıcı ilk login olduğunda login() metodu, logout butonuna basıldığında da logout() metodu çağırılacak. Kullanıcı daha önceden uygulamaya izin vermiş ve giriş sırasında Facebook’ta online durumda ise otomatik olarak login() metodu çağrılacak.

Kullanıcının login ve logout işlemlerini yapabilmesi için FBML kontrolü olarak login butonu ekliyoruz.

<fb:login-button autologoutlink="true" ></fb:login-button>

Son olarak login ve logout durumlarında sayfamızdaki değişiklikleri yapacak javascript metodlarımızı ekliyoruz.

function login(){
    FB.api('/me', function(response) {
    document.getElementById('login').style.display = "block";
    document.getElementById('login').innerHTML ="Sayın " + response.name + ", başarıyla bağlandınız!";
    });
 }
function logout(){
    document.getElementById('login').style.display = "none";
 }

Ve sayfamızın son hali şu şekilde:

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
   <title>Graph API ile Facebook Connect Örneği</title>
</head>
<body>
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({appId: '121581787886211', status: true, cookie: true, xfbml: true});

/* Bütün olaylar tanımlanıyor */
FB.Event.subscribe('auth.login', function(response) {
   // cevap geldiğinde çalışacak kod
   login();
});
FB.Event.subscribe('auth.logout', function(response) {
   // cevap geldiğinde çalışacak kod
   logout();
});
FB.getLoginStatus(function(response) {
   if (response.session) {
   // login olmuş ve bağlanmış kullanıcı
   login();
   }
});
};

(function() {
   var e = document.createElement('script');
   e.type = 'text/javascript';
   e.src = document.location.protocol +
   '//connect.facebook.net/tr_TR/all.js';
   e.async = true;
   document.getElementById('fb-root').appendChild(e);
}());

function login(){
   FB.api('/me', function(response) {
   document.getElementById('login').style.display = "block";
   document.getElementById('login').innerHTML ="Sayın " + response.name + ", başarıyla bağlandınız!";
});
}
function logout(){
   document.getElementById('login').style.display = "none";
}
</script>

<h3>Graph API ile Facebook Connect Örneği</h3>
<p><fb:login-button autologoutlink="true" ></fb:login-button></p>
<br /><br /><br />
<div id="login" style ="display:none"></div>
</body>
</html>