Laravel 4: Sentry 2 ve Facebook Login ve Kayıt Entegrasyonu

Arda Kılıçdağı
Arda Kılıçdağı
3 min readApr 10, 2014

Bugün sizlere popüler PHP Framework’ü Laravel 4 üzerinde popüler authentication sınıfı Sentry (v2) ile Facebook connect entegrasyonunu nasıl yapacağınızı anlatacağım. Normalde Sentry için Cartalyst’in Sentry Social adında bir paketi var ve çoğu oAuth ve oAuth2 bileşenlerini otomatik olarak destekliyor, fakat bu paket ücretli (ayda 20 dolarlık bir paketin parçası).

Ben de bunun yerine “neden kendimiz yapmayalım ki :)” mottosuyla hem Facebook PHP-SDK API’sini kurcalayarak, hem de hibrit bir yolla kendimce bir authentication oluşturdum.

Bu aşamaları takip ederseniz;

  • Sentry 2 kullanan uygulamanıza Facebook kullanıcıları kayıt olabilir,
  • Bu uygulamanıza Facebook kullanıcıları giriş yapabilir,
  • Facebook üzerinden siteye kayıt ve giriş yapan kullanıcılar isterlerse Facebook girişi değil, kayıt sırasında atanan normal kullanıcı adı ve şifreleri ile de giriş yapabilir olacaklar.

Gelelim Yapılacaklara;

  • İlk önce henüz oluşturmadıysanız Facebook Developers sayfasından bir facebook uygulaması oluşturun. Deneme amaçlı sandbox modu açık olarak bırakırsanız şimdilik daha kolay test edebilirsiniz. Uygulamanın App ID ve Secret keylerini not alın.
  • Şimdi Sentry’i Laravel Projenizde kurduğunuzdan emin olun.
  • Ardından Facebook PHP-SDK’yı projenize dahil etmelisiniz. Bunun için composer.json dosyasında require kısmı içine "facebook/php-sdk": "dev-master" değerini ekleyin (virgüllere dikkat! Son değer hariç tümünde virgül ile ayrık olmalı değerler). Alternatif olarak composer require facebook/php-sdk diyerek de ekleyebilirsiniz.
  • Şimdi de composer update ya da php composer.phar update komutu ile değişiklikleri alıp paketi projenize ekleyin.
  • Daha sonra facebook metalarını tutacak yeni bir tablo oluşturalım. Bunun için bir migration dosyası oluşturmalıyız:
  • Şimdi de bu migrationı migre edip facebook meta tablosunu oluşturuyoruz: php artisan migrate
  • Ardından User modelimizi açıp relation tanımlamamız lazım:
  • Şimdi facebook için bir konfigürasyon dosyası oluşturmalısınız. Ben bunun için aşağıdaki dosyayı app/config/facebook.php olarak kaydettim (içindeki appId ve secret kısımlarını ilk maddede not aldığımız kendi uygulamanızınkilerle doldurmayı unutmayın):
  • Şimdi de bir önceki adımda tanımladığım relationu oluşturmak için Userfb diye bir model oluşturdum ve relationları tanıladım: app/models klasörüne (ya da artık nerede tutuyorsanız modelleri) oraya Userfb.php olarak aşağıdaki kodu ekleyin:
  • Şimdi de route tanımlamamız lazım. Facebook için ben 4 tane route tanımladım. İkisi giriş kayıt butonlarına tıklanınca olan actionlar, diğer ikisi de Facebook’ın bu istek üzerine giriş vs. yapıldıktan sonra datayı doğrulama yapmamız için geri döndürdüğü callback route’ları olacak. Ben şu şekilde örnekledim:
  • Şimdi de bu route’ları barındıracak controllerımız lazım. Örnekte FacebookController diye gittim, öyle vereceğim. Aşağıdaki dosyayı app/controllers klasörü altına (veya controllerları nerede barındırıyorsanız) FacebookController.php olarak ekleyin:
  • Controller PHP dosyası içinde her şeyi satır satır açıklamaya çalıştım, umarım açıklayıcı olmuştur. (Verileri eklerken Eklenen verilerin null dönüp dönmediğini kontrol etmeyi unutmayın, ben bunun için bir fonksiyondan geçiriyorum tüm verileri, ya da migrationu geri alıp default() ları kaldırıp null değer eklenebilir şekilde ayarlayın)
  • Şimdi de son yapacağınız şey sandbox hesabınızı açıp rotalar üzerinden deneme yapmak :)
  • Eğer sorularınız olursa aşağıdaki yorum kısmından sorabilirsiniz. Elimden geldiğince cevaplamaya çalışacağım.

İyi kodlamalar, afiyet olsun ;)

Originally published at arda.pw on April 10, 2014.

--

--