Programlama

Web Programlama

Veritabanı

Facebook hesabındaki sayfaya PHP ile gönderi ekleme

Web sitenize eklediğiniz yeni makale veya haberleri Facebook hesabınızdaki bir sayfaya da eklemek istediğinizde, aynı işlemi ikinci kez yapmak zaman ve iş gücü kaybına neden olmaktadır. Bu sorunu gidermek amacıyla, yeni eklenen makale veya haberleri herhangi bir işlem yapmadan Facebook hesabınızdaki bir sayfaya eklemek için, Facebook PHP SDK paketini kullanabilirsiniz.

1. İşlemleri gerçekleştirmek için öncelikle, sistem gereksiminlerinizi kontrol edin:

a. PHP 5.4 veya daha gelişmiş bir sürümün bilgisayarınızda kurulu olması gerekir.

Eğer bilgisayarınızda PHP kurulu değilse, WampServer kullanarak bilgisayarınızda kuracağınız lokal sunucu ile bu işlemi gerçekleştirebilirsiniz.

b. Mbstring uzantısının aktif olduğunu kontrol edin.

2. Facebook PHP SDK paketini bilgisayarınıza kurun.

Bu işlemi otomatik olarak Composer yoluyla veya manuel olarak Facebook PHP SDK paketini indirip kurarak 2 farklı yöntemle gerçekleştirebilirsiniz.

a. Composer yoluyla otomatik olarak kurma

Bu işlem için:

(1) Web sitenizin yer aldığı ana dizin içinde composer.json adlı bir metin dosyası oluşturarak içine aşağıdaki satırları ekleyin:

{
  "require" : {
    "facebook/graph-sdk" : "~5.0"
  }
}

(2) https://getcomposer.org/ adresindeki Composer-Setup.exe dosyasını indirin, çalıştırın ve kurun. Kurulum işlemi bittikten sonra, komut istemi (dos penceresinde) ile ana dizinde iken aşağıdaki komutu yazdığınızda, en son Composer sürümü indirilerek içinde bulunduğunuz aktif dizin altında aşağıdaki dizin yapısı oluşturulur.

composer install

WampServer C sürücüsünde kurulu ise, Web sitenizin ana dizini, benimsitem adlı klasörde bulunan site için otomatik olarak oluşturulacak vendor dizisi yol tanımı aşağıdaki şekilde olacaktır:

C:\wamp\www\benimsitem\vendor

(3) vendor dizini içinde bulunan ve Composer otomatik yüklemesini yapan autoload.php dosyasını kodlarınıza dahil etmek için aşağıdaki komut satırını PHP kodlarınızın başına ekleyin:

require_once __DIR__ . '/vendor/autoload.php';

b. Manuel olarak Facebook PHP SDK paketini indirip kurma (Biz bu yöntemi tercih edeceğiz)

(1) Facebook PHP SDK paketini indirin.

Dosyayı açtıktan sonra, src dizinini kopyalayarak ana dizin altına yapıştırın ve src dizininin adını fbsrc olarak değiştirin (Facebook ile ilgili bir dizin olduğunu belirlemek için, gerekli değildir).

C:\wamp\www\benimsitem\fbsrc

(2) fbsrc/Facebook dizini içinde bulunan ve otomatik yükleme yapan autoload.php dosyasını kodlarınıza dahil etmek için aşağıdaki komut satırını PHP kodlarınızın başına ekleyin:

require_once __DIR__ . '/fbsrc/Facebook/autoload.php';

3. Facebook Geliştiricileri sitesine giderek yeni bir Facebook uygulaması oluşturun.

a. "Yeni Bir Uygulama Oluştur" butonuna basın.

b. Karşınıza gelen pencerede "Ekran adı" için bir değer girip, bir kategori seçtikten sonra "Uygulama Kodu Oluştur" butonuna tıklayın. İletişim e-posta adresi otomatik olarak çıkar.

c. Karşınıza gelen pencerede, güvenlik kodunu girdikten sonra, "Gönder" butonuna basın.

d. Böylece yeni bir Facebook uygulaması oluşturulmuş olur. Sol taraftaki menü seçeneğinden "Pano" seçeneğine tıkladığınızda;

Ekranda, API Sürümü, Uygulama Kodu ve Uygulama Gizli Anahtarı bg-infolerini görebilirsiniz. Bu bg-infoleri önümüzdeki safhalarda kullanacağız.

4. Kısa süreli Giriş Jetonu alma

Facebook sayfanıza otomatik olarak gönderme yapabilmeniz için süresiz giriş jetonu almanız gerekir. Süresiz giriş jetonunu almadan önce, kısa süreli giriş jetonu almak gerekir. Bunun için:

a. Facebook Graph API Explorer sayfasına gidin. Karşınıza gelen sayfada "Graph API Explorer" seçili bölüme tıklayarak, Facebook uygulamanızı seçin.

b. "Jeton Al" kutusuna tıklayınca açılan menüden "Get User Access Token" seçeneğini seçin.

c. Karşınıza gelen aşağıdaki pencereden 'publish_pages' ve 'manage_pages' seçeneklerini seçin ve 'Get Access Token' butonuna tıklayın.

d. Karşınıza gelen aşağıdaki pencerede '... olarak devam et' butonuna tıklayın.

e. Karşınıza gelen aşağıdaki pencerede 'Tamam' butonuna tıklayın.

f. Karşınıza gelen pencerede kırmızı çerçeve ile gösterilen ve yaklaşık bir saat içinde geçerliliği sona erecek olan bir "Kullanıcı Giriş Jetonu" elde edilmiş olur.

6. Sınırsız Giriş Jetonu oluşturma

Aşağıdaki url adresi içindeki uygulama kodu, uygulama gizli anahtarı ve giriş jetonu değeri yerine elde ettiğiniz değerleri girerek, tarayıcınızın adres çubuğuna değeri girin ve ENTER tuşuna basın:

https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=uygulamaid&client_secret=uygulamagizlianahtari&fb_exchange_token=girisjetonu

İşlemi uyguladıktan sonra, aşağıdakine benzer bir ekran karşınıza gelecektir:

access_token=EAAFUAnVleooBAMlPgbjwNUIgOtZCpIuBrn5jxISrOyZA3BtrtGywBAEY7mNO11z4orGDlNuxtaW3Y0naVzZC1RGRhCAQb6oSaXWTqMQKvWbdBoIH77LshklGxHaNPT5teVt6LXS8ZBjMxAr89y73jIaNpZCexuy0ZD&expires=5184000

Böylece, zaman sınırsız kullanım özelliğine sahip ve aşağıdakine benzer bir giriş jetonu elde etmiş oluruz:

EAAFUAnVleooBAMlPgbjwNUIgOtZCpIuBrn5jxISrOyZA3BtrtGywBAEY7mNO11z4orGDlNuxtaW3Y0naVzZC1RGRhCAQb6oSaXWTqMQKvWbdBoIH77LshklGxHaNPT5teVt6LXS8ZBjMxAr89y73jIaNpZCexuy0ZD

Elde edilen giriş jetonunun bilgilerini elde etmek için Erişim Jetonu Hata Ayıklayıcısı nı kullanabilirsiniz.

Karşınıza gelen pencerede, aşağıda kırmızı çerçeve ile belirlenmiş alana elde ettiğiniz Giriş Jetonunu girer ve "Hata Ayıklama" butonuna tıklarsanız, giriş jeton ile ilgili bilgilere ulaşabilirsiniz. Kırmızı ile işaretlenmiş Asla ifadesine dikkat ediniz.

7. PHP kodlarını oluşturma

a. Web sitemize yeni eklenen makaleleri Facebook sayfamıza otomatik olarak göndermek için, Facebook Graph API komutlarını kullanacağız. Facebook Graph API komutlarını kullanmadan önce, oluşturduğunuz Facebook uygulamanızın bilgilerini FacebookFacebook hizmeti ile kullanabilmek için konfigürasyon değerlerinizi içeren bir FacebookFacebook değişkeni oluşturmanız gerekir. Aşağıdaki komut içinde, app-id ile gösterilen yere Uygulama Kodunuzu (Application ID), app-secret ile gösterilen yere ise Uygulama Gizli Anahtarı Kodunuzu girerek bu işlemi gerçekleştirebilirsiniz.

$fb = new FacebookFacebook([
  'app_id' => 'app-id',
  'app_secret' => 'app-secret',
  'default_graph_version' => 'v2.8',
]);
$fb = new FacebookFacebook([
  'app_id' => '373844512963210',
  'app_secret' => '87cc74a234beb6ab0c79e272d90e04ea',
  'default_graph_version' => 'v2.8',
]);

b. Elde ettiğimiz süresiz kullanıcı giriş jetonunu aktif hale getirme ve kullanıcı hakkında temel bilgileri almak için aşağıdaki kod satırlarını ekleyin.

$accessToken =  'girişjetondegeri';

// Kullanıcı giriş jetonunu aktif jeton haline getirme
$fb->setDefaultAccessToken($accessToken);

// Kullanıcı hakkında temel bilgileri alma
try {
 $profile_request = $fb->get('/me');
 $profile = $profile_request->getGraphNode()->asArray();
} 
catch(FacebookExceptionsFacebookResponseException $e) {
      echo 'Grafik hatası: ' . $e->getMessage();
      header("Yer: ./");
      exit;	
} 
catch(FacebookExceptionsFacebookSDKException $e) {
      echo 'Facebook SDK hatası: ' . $e->getMessage();
      exit;
}

Yukarıdaki satırlarda, Facebook Graph API'ye /me uç noktası için bir GET işlemi talebi gönderiyoruz. /me uç noktası kullanıcıya ulaşmada veya sayfa oluşturma isteklerinde kullanılır.

c. Aşağıdaki kod satırları, Facebook hesabında bulunan sayfa bilgilerini alır ve sırasıyla sayfa isimlerini kontrol ederek, gönderiyi iletmek istediğiniz sayfa adı ile karşılaştığında, post komutunu kullanarak gönderme işlemini gerçekleştirir.

// Facebook hesabında bulunan sayfa bilgilerini alma
$pages = $fb->get('/me/accounts');
$pages = $pages->getGraphEdge()->asArray();	  

foreach ($pages as $key) {
    if ($key['name'] == 'Sayfa_Adı') {
        $params["message"] = 'Başlık bilgisi';
        $params["name"] = 'Gönderenin adı';
        $params["link"] = 'Gönderinin linki';
        $params["picture"] = "Resim internet adresi";
        $params["description"] = 'Gönderi ana metin kısmı'; A description of a link in the post (appears beneath the caption).
        // Gönderme işlemi 
        $post = $fb->post('/' . $key['id'] . '/feed', $params, $key['access_token']);
    }
}

post komutu ile ilgili parametrelere Facebook Geliştiricileri adresinden ulaşabilirsiniz.

Yukarıda parça parça bulunan kodları birleştirdiğinizde aşağıdaki gibi bir dosya elde edebilirsiniz:

require_once __DIR__ . '/fbsrc/Facebook/autoload.php';

$fb = new FacebookFacebook([
  'app_id' => '373844512963210',
  'app_secret' => '87cc74a234beb6ab0c79e272d90e04ea',
  'default_graph_version' => 'v2.8',
]);

$accessToken =  'girişjetondegeri';

// Kullanıcı giriş jetonunu aktif jeton haline getirme
$fb->setDefaultAccessToken($accessToken);

// Kullanıcı hakkında temel bilgileri alma
try {
 $profile_request = $fb->get('/me');
 $profile = $profile_request->getGraphNode()->asArray();
} 
catch(FacebookExceptionsFacebookResponseException $e) {
      echo 'Grafik hatası: ' . $e->getMessage();
      header("Yer: ./");
      exit;	
} 
catch(FacebookExceptionsFacebookSDKException $e) {
      echo 'Facebook SDK hatası: ' . $e->getMessage();
      exit;
}

// Facebook hesabında bulunan sayfa bilgilerini alma
$pages = $fb->get('/me/accounts');
$pages = $pages->getGraphEdge()->asArray();	  

foreach ($pages as $key) {
    if ($key['name'] == 'Sayfa_Adı') {
        $params["message"] = 'Başlık bilgisi';
        $params["name"] = 'Gönderenin adı';
        $params["link"] = 'Gönderinin linki';
        $params["picture"] = "Resim internet adresi";
        $params["description"] = 'Başlık altındaki açıklama kısmı';
        // Gönderme işlemi 
        $post = $fb->post('/' . $key['id'] . '/feed', $params, $key['access_token']);
    }
}

Yukarıdaki PHP kodlarını bu haliyle (kırmızı ile işaretli bilgileri kendi bilgilerinizle değiştirerek), lokal sunucunuzda Facebook dizininizin yer aldığı ana dizinde (C:\wampwww\benimsitem) bulunan bir dosyaya kaydederek, tarayıcınızın satırında çalıştırdığınızda, Sayfa_Adı ile gösterilen Facebook sayfanıza ileti gönderilmiş olur.