php-fb-api

PHP ile Facebook API Kullanımı

Beğenirsiniz veya beğenmezsiniz Facebook, 800 Milyondan fazla toplam kayıtlı, günlük 400 milyon aktif kullanıcısı ile dünya üzerindeki sınırları yok sayarak kişisel, politik ve iş çevrelerine yön veriyor. Bunun sonucu olarak da Facebook ile her geçen gün daha çok etkileşim içine girer olduk. Bu etkileşimi daha da güçlendirebilmek adına Facebook uygulama geliştiricleri için, Facebook Platform adında […]

Beğenirsiniz veya beğenmezsiniz Facebook, 800 Milyondan fazla toplam kayıtlı, günlük 400 milyon aktif kullanıcısı ile dünya üzerindeki sınırları yok sayarak kişisel, politik ve iş çevrelerine yön veriyor. Bunun sonucu olarak da Facebook ile her geçen gün daha çok etkileşim içine girer olduk. Bu etkileşimi daha da güçlendirebilmek adına Facebook uygulama geliştiricleri için, Facebook Platform adında bir dizi API seti oluşturdu. Bu sayede geliştiriciler Facebook.com üzerindeki site özelliklerine ve kullanıcı bilgilerine erişebilir duruma geldiler.

Facebook geliştirici platformu’nun ilk yayınlandığı Mayıs 2007 den bu yana 1 milyondan fazla geliştirici Facebook Geliştirici Programına kayıt yaptırdı. Şu günlerde rahatlıkla her boşlukta bulabileceğiniz Beğen butonu, sizi sıkıcı üyelik formları ve hatırlanması güç şifrelerle uğraştırmadan istediğiniz sitelere üye olabilmenizi sağlayan Facebook Connect her gün en sık karşılaştığınız API uygulamalarından bazıları.

Facebook’un  merkezinde Social Graph platformu bulunmaktadır. Bu platform aracılığı ile kullanıcıların birbirleri ile ve site üzerindeki uygulamalar ile yapacakları etkileşimin altyapısı sağlanmaktadır. Bir Facebook Platform Geliştiricisi olarak API’ler aracılığı ile yapabileceklerinizin sonu yoktur. Arkadaşlarla etkileşim, etkinlikler, sayfalar, fotoğraflar, notlar, gruplar ve diğer herşeye bu API’ler aracılığı ile erişebilirsiniz. Bu noktada PHP kafasına sahip arkadaşlar biraz şanslılar çünkü Facebook, PHP geliştiricileri için bünyesindeki geliştiriciler tarafından sürekli elden geçirilen Facebook PHP SDK’sını sunmakta. Facebook yeni özelliklerini veya meydana gelen problemlerin çözümünü ilk olarak bu SDK kitine yansıtmakta. Bunun sonucu olarak Facebook ile olan ilişkilerinizde PHP kullanmanızı tavsiye ederim.

Facebook PHP SDK Kurulumu

Facebook PHP SDK’sını edinmenin en kolay yolu Github Deposu’nu kullanmaktır. Bu sayede en güncel sürüme kolayca erişebilirsiniz. Son versiyonu bilgisayarınıza indirmek için en sevdiğiniz Git istemcisi ile vermeniz gereken komut :

$ git clone https://github.com/facebook/php-sdk.git

Indirme işlemi tamamlandığında, indirdiğiniz klasörde bulunan src klasörünü PHP nin include_path değişkenine tanımlayabilirsiniz. Ancak bu değişimi php.ini üzerinde yaptığınızdan web sunucunuzu yeniden başlatmanız gerekecektir.

Facebook API Key Almak

Graph API ile etkileşim içine girebilmek için öncelikle API anahtarına ihtiyacınız var. Bu anahtarı alabilmek için Facebook Geliştirici Websitesi’ni ziyaret edip uygulamanızın kaydını yaptırmanız gerekiyor. Bu işlemi tamamladığınızda Facebook size App ID ve App Secret adında iki tane anahtar verecek.

Facebook Üye Profiline Erişmek

Muhtemelen Facebook API kullanımına en kolay örnek kullanıcı profillerine erişmek üzerine olacaktır. Bu noktada size gelen verinin detayını kullanıcının gizlilik ayarlarının belirlediğini belirtmek isterim. En yüksek gizlilik derecesinde kullanıcıların adına, soyadına, cinsiyetine ve dil ayarlarına ulaşabilirsiniz.

Çalıştırmanız gereken kod :

<?php

/**
 * Herkese açık profil bilgilerini Facebooktan çeker.
 *
 * @param $user_id integer Facebook kullanıcı id'si.
 * @return std object array Kullanıcı Bilgileri
 */

function getPublicData($user_id) {
	$public_data = file_get_contents('https://graph.facebook.com/'.$user_id);
	$public_data = json_decode($public_data);

	return $public_data;
}

$info = getPublicData(655210764);

print_r($info);

Bu kod size çıktı olarak şunu vermelidir :

stdClass Object
(
    [id] => 655210764
    [name] => Turker Ince
    [first_name] => Turker
    [last_name] => Ince
    [link] => http://www.facebook.com/people/Turker-Ince/655210764
    [gender] => male
    [locale] => en_US
)
benzeri birşey vermelidir. Burada id’si verilen kullanıcıya ait herkese açık temel bilgilerine erişebilmektesiniz.
Giriş Yapan Kullanıcı Hakkında Bilgi EdinmekYukarıdaki uygulamada dikkat ettiyseniz kullanıcı bilgilerini statik olarak tanımlamam gerekiyor ayrıca kullanıcı hakkında erişebildiğim bilgiler oldukça kısıtlı. Gerçek uygulamalarda buna benzer bilgileri ve fazlasını dinamik olarak almanız gerekiyor. Bunu yapabilmek için de uygulamanızı kullanmak isteyen Facebook kullanıcısının size bazı bilgilerine erişebilmeniz için yetkilendirmesi gerekiyor. Izın alma işlemi için sitenizde ziyaretçiyi Facebook tarafından özel olarak üretilen bir adrese yönlendirmeniz gerekiyor (Genellikle pop-up pencerede açılır). Bu işlemi yaparken karşılaşılan ekranın bir örneğine aşağıdan bakabilirsiniz. (Bkz. Şekil 1)
Şekil 1. Facebook uygulamasına giriş ekranıKullanıcı bir kere Log In butonuna tıkladığında artık gerekli Erişim izni (Access Token)’ne sahip oluyorsunuz. Bu noktada Facebook kullanıcısının profil detaylarına erişebiliyorsunuz. Ancak kod yazmaya başlamadan Facebook üzerinde uygulamanın çalışacağı website bilgilerini tanımlamanız gerekiyor. Bu sayede Facebook sayfası üzerinden gerekli izin alındıktan sonra hangi siteye geri dönüş yapılacağı tanımlanmış oluyor. Bu ayarlamayı Facebook Geliştirici Sayfasında uygulamanızın ayarlarındaki Select how your app integrates with Facebook başlığı altındaki Website kısmından yapabilirsiniz.Bu bilgileri tamamladığınızda aşağıdaki kodu çalıştırırsanız Şekil 2 dekine benzer bir çıktı alacaksınız.

<?php
require 'php-sdk/src/facebook.php';

// Uygulama nesnesi. (appId ve secret id bilgilerini kendi uygulamanızınki ile değiştiriniz.)
$facebook = new Facebook(array(
  'appId'  => '126419800801731', // Oluşturduğumuz uygulamaya ait app id.
  'secret' => 'b7d95192f9c26fbc616ac16fec1a47cd', // Oluşturduğumuz uygulamaya ait secret.
));

// User ID bilgisi al
$user = $facebook->getUser();

// Kullanıcı giriş durumuna göre kullanıcı bilgilerini al.
//
// Eğer $user değişkeni tanımlıysa kullanıcı giriş yapmış demektir.

if ($user) {
  try {
    // Giriş yapmış bir kullanıcı varsa.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

// Kullanıcı giriş durumuna göre Login veya Logout butonlarını göster.
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl();
}

?>
<!doctype html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
  <head>
    <title>Geliştirici Günlüğü - PHP - FB API</title>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style>
      body {
        font-family: 'Lucida Grande', Verdana, Arial, sans-serif;
      }
      h1 a {
        text-decoration: none;
        color: #3b5998;
      }
      h1 a:hover {
        text-decoration: underline;
      }
    </style>
  </head>
  <body>
    <h1>Geliştirici Günlüğü - PHP - Facebook API</h1>

    <?php if ($user): ?>
      <a href="<?php echo $logoutUrl; ?>">Çıkış Yap</a>
    <?php else: ?>
      <div>
        Facebook API Giriş Bilgisi:
        <a href="<?php echo $loginUrl; ?>">Facebook ile giriş yap</a>
      </div>
    <?php endif ?>

    <h3>PHP Session</h3>
    <pre><?php print_r($_SESSION); ?></pre>

    <?php if ($user): ?>
      <h3>Siz</h3>
      <img src="https://graph.facebook.com/<?php echo $user; ?>/picture">

      <h3>Erişebildiğimiz kullanıcı bilgileriniz (/me)</h3>
      <pre><?php print_r($user_profile); ?></pre>
    <?php else: ?>
      <strong><em>Giriş Yapmadınız.</em></strong>
    <?php endif ?>
  </body>
</html>


Şekil 2 – Facebook uygulaması giriş yapmadan önceki bilgiler.

Gördüğünüz gibi şu anda giriş yapmadık ve Facebook’un bize gönderdiği bilgiler sadece bizim session id mizden ibaret.

Giriş yapıldıktan sonra ise Şekil 3 dekine benzer bir çıktı almalısını


Şekil 3. Giriş işleminden sonra elde ettiğimiz bilgiler.

Kullanıcı bir kez giriş yaptıktan sonra Facebook hesabından çıkış yapana kadar tekrar bilgi erişimi için izin vermesine gerek yoktur.

Her seferinde giriş yapılmasını engellemenin bir diğer yolu da kullanıcıya ait profile id bilgisini (Örnekteki id 655210764) kendi local veritabanınızda saklamanızdır. Bu şekilde daha önceden giriş yapmış bir kullanıcıyı tekrar tekrar giriş yapmaya zorlamamış olursunuz.

Bu noktaya nasıl geldik ?

Bu makalede anlatmaya çalıştığım kodlar ve uygulama konsepti temel Facebook API kullanımına ilişkin örneklerdir. Facebook API lerinin yapabilecekleri konusunda daha detaylı bilgi edinmek için Facebook API Dökümantasyonu sayfalarını ziyaret edebilirsiniz.