<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mustafa Murat Aydın &#187; facebook</title>
	<atom:link href="http://www.mmaydin.com/tag/facebook/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mmaydin.com</link>
	<description>Bu adam neler yapıyor</description>
	<lastBuildDate>Sun, 31 Jul 2011 12:55:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Sitenizde Facebook hesabı ile login işlemi</title>
		<link>http://www.mmaydin.com/2010/07/sitenizde-facebook-hesabi-ile-login-islemi/</link>
		<comments>http://www.mmaydin.com/2010/07/sitenizde-facebook-hesabi-ile-login-islemi/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 16:48:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programlama]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[üye ekle]]></category>

		<guid isPermaLink="false">http://www.mmaydin.com/?p=84</guid>
		<description><![CDATA[Sitenize giren kişiler için üyelik işlemi yapmadan yazılarınıza yorum yapabilmesi için Facebook hesaplarını kullanabilirsiniz. Bu sadece bir örnek tabi farklı yerlerde de kullanabilirsiniz. Bu yazımda bunu nasıl yapacağınızı anlatacağım. İlk önce facebookta bir uygulama oluşturmanız gerekli bunun uygulama anhtarını kullanacağız. Bunun için; http://www.facebook.com/developers/createapp.php adresini ziyaret edin ve uygulamanızı oluşturun (Uygulama oluşturmak için facebook un developers [...]]]></description>
			<content:encoded><![CDATA[<p>Sitenize giren kişiler için üyelik işlemi yapmadan yazılarınıza yorum yapabilmesi için Facebook hesaplarını kullanabilirsiniz. Bu sadece bir örnek tabi farklı yerlerde de kullanabilirsiniz.</p>
<p>Bu yazımda bunu nasıl yapacağınızı anlatacağım.</p>
<p>İlk önce facebookta bir uygulama oluşturmanız gerekli bunun uygulama anhtarını kullanacağız.</p>
<p>Bunun için;</p>
<blockquote><p><a href="http://www.facebook.com/developers/createapp.php">http://www.facebook.com/developers/createapp.php</a></p></blockquote>
<p>adresini ziyaret edin ve uygulamanızı oluşturun (Uygulama oluşturmak için facebook un developers uygulamasını eklemeniz gerekli).</p>
<p>Oluşturduğunuz uygulamanın <strong><em>ayarlar</em></strong> bölümünde <strong><em>bağlan</em></strong> sekmesinde <strong><em>Bağlan URL&#8217;si</em></strong> bölümüne dosyaları oluşturup koyduğunuz ana adresi yazınız. (Benimkinde &#8220;<em>http://code.mmaydin.com/</em>&#8221; yazıyor) </p>
<p>Oluşturduğunuz uygulamanın<strong> <em>Api Anahtarını</em></strong> ilerki aşamalarda kullanacağız.</p>
<p>Facebook kullanıcıların doğruluğu için bir sayfa oluşturmamız gerekli</p>
<blockquote><p> vi dogrula.html</p></blockquote>
<p>İçine aşağıdakileri kopyalıyoruz</p>
<pre class="brush: html">
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" &gt;
     &lt;body&gt;
          <script src="https://ssl.connect.facebook.com/js/api_lib/v0.4/XdCommReceiver.js" type="text/javascript"></script>
     &lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Bu sayfayı aşağıda oluşturacağımız <strong><em>index.html</em></strong> sayfasında kullanacağız. Bu yüzden verdiğiniz ismi aşağıda düzeltmeniz gerekli. Ben <strong><em>dogrula.html</em></strong> verdim ve aşağıda da onu kullandım.</p>
<p>Facebook kullanıcısında ne tür izinler isteyeceğimize karar vermemiz gerekir. Eğer kullanıcının sadece ismine fotosuna erişmek istiyorsak &#8220;<strong><em>read_stream</em></strong>&#8221; izni işimizi görecektir. Ama kullanıcının profiline bişeyler yazmak istiyorsak &#8220;<strong><em>publish_stream</em></strong>&#8221; iznini istemeliyiz. Kullanıcının facebookta kullandığı mail adresini almak istiyorsak &#8220;<strong><em>mail</em></strong>&#8221; iznini istemeliyiz.</p>
<p>Diğer izinlere bakmak için <a href="http://developers.facebook.com/docs/authentication/permissions">buraya</a> bakabilirsiniz.</p>
<p>Bir html sayfası (siz başka türleri de kullanabilirsiniz işimiz sadece javascriptle) oluşturuyoruz ve içine aşağıdakileri satırları kopyalıyoruz.</p>
<blockquote><p> vi index.html</p></blockquote>
<pre class="brush: js">
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script>

<script language="JavaScript" type="text/javascript">

function facebook_basla() {

            FB_RequireFeatures(["Connect"],function() {
                <!-- yukarida oluşturduğum dosyayı(dogrula.html) burda kullanıyorum -->
                FB.init("UYGULAMANIZIN API ANAHTARI", "dogrula.html);
                FB.Connect.requireSession(facebook_izin_iste);
                }
            );
}

function facebook_izin_iste() {

        <!-- Aşağıya istediğiniz izinleri yazınız-->
        FB.Connect.showPermissionDialog("read_stream", facebook_izinlerden_sonra);

        <!-- çoklu izin isteklerinde izinler arasında virgül(,) kullanıyoruz-->
        <!--  FB.Connect.showPermissionDialog("read_stream,publish_stream,mail", facebook_izinlerden_sonra); -->
}

function facebook_izinlerden_sonra() {

        <!-- Sitenize girin kişinin facebook id sini alıyoruz-->
        var uid = FB.Facebook.apiClient.get_session().uid ;

        <!-- Kullanıcının facebook idsi, ismi , 50x50 lik resmi ve kullanıcı adını alıyoruz (Kullanıcının eğer bir kullanıcı adı yok ise username değişkeni boş gelecektir). -->
        var sql = "SELECT id,name,pic_square,username FROM profile WHERE id ="+uid;

        FB.Facebook.apiClient.fql_query(sql, function(result, ex) {
            var userName= result[0]['name'];
            var userId = result[0]['id'];
            var userPic = result[0]['pic_square'];
            var userUrl = result[0]['username'];

            <!-- elinizde artık kullanıcı ile ilgili bilgiler hazır artık bu bilgileri istediğiniz yerde kullanabilirsiniz.-->
            kullanici_ekle(userName,userId,userPic,userUrl);

        });
}

function kullanici_ekle (userName,userId,userPic,userUrl)  {

        var icerik = "kullanici id = " + userId + "</br>";
        icerik += "kullanici adi = " + userName + "</br>";
        icerik += "kullanici fotografi = <img src='" + userPic + "'</br>";

        if (userUrl != "") {
                icerik += "kullanici profili = <a href='http://www.facebook.com/" + userUrl + "'>http://www.facebook.com/" + userUrl + "</a>";
        } else {
                icerik += "kullanici profili = <a href='http://www.facebook.com/profile.php?id=" + userId + "'>http://www.facebook.com/profile.php?id=" + userId + "</a>";

        }
        document.getElementById("kullanici").innerHTML = icerik;        

}

</script>
<a style="text-decoration:none;" onclick="facebook_basla();return false;" href="#">facebook hesabinla giris yap</a>
<div id="kullanici"></div>
</pre>
<p>Burda sadece profile tablosundaki verileri kullandık. İsterseniz diğer tablolardan kullanıcının başka özelliklerini de edinebilirsiniz. Diğer tablolara <a href="http://wiki.developers.facebook.com/index.php/FQL_Tables">burdan</a> erişebilirsiniz.</p>
<p>Örnek uygulamaya <a href="http://code.mmaydin.com/facebook_login/index.html">burdan</a> , uygulamanın kodlarına <a href="http://www.mmaydin.com/wp-content/uploads/2010/07/facebook_login.tar.gz">burdan</a> erişebilirsiniz.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mmaydin.com/2010/07/sitenizde-facebook-hesabi-ile-login-islemi/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CakePhp ile Facebook Application Yapımı</title>
		<link>http://www.mmaydin.com/2009/12/cakephp-ile-facebook-application-yapimi/</link>
		<comments>http://www.mmaydin.com/2009/12/cakephp-ile-facebook-application-yapimi/#comments</comments>
		<pubDate>Sun, 27 Dec 2009 00:46:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programlama]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[facebook application]]></category>

		<guid isPermaLink="false">http://www.mmaydin.com/?p=76</guid>
		<description><![CDATA[Önceki yazımda cakephp kurulumunu anlatmıştım. Bu yüzden cakephp kurulum aşamasını geçiyorum isteyenler burdan bakabilir. İlk önce applicationımızın kullanacağı facebook kütüphanelerini indirmemiz gerekli. Facebook php kütüphanesini bu adresten indirebiirsiniz. indirdikten sonra cakephp içinde tutucağımız bölümü oluşturalım. cd /var/www/cakephp/app/vendors siz kendi uygulamanızı bulunduğunu dizine göre değiştiriniz. mkdir facebook indirdiğimiz sıkıştırılmış dosyayı açıyoruz. tar -zxvf facebook-platform.tar.gz oluşturduğumuz facebook [...]]]></description>
			<content:encoded><![CDATA[<p>Önceki yazımda cakephp kurulumunu anlatmıştım. Bu yüzden cakephp kurulum aşamasını geçiyorum isteyenler <a href="http://www.mmaydin.com/2009/12/cakephp-kurulumu/" target="_blank">burdan</a> bakabilir.</p>
<p>İlk önce applicationımızın kullanacağı facebook kütüphanelerini indirmemiz gerekli.</p>
<p>Facebook php kütüphanesini <a href="http://svn.facebook.com/svnroot/platform/clients/packages/facebook-platform.tar.gz" target="_blank">bu adresten</a> indirebiirsiniz.</p>
<p>indirdikten sonra cakephp içinde tutucağımız bölümü oluşturalım.</p>
<blockquote><p>cd /var/www/cakephp/app/vendors</p></blockquote>
<p>siz kendi uygulamanızı bulunduğunu dizine göre değiştiriniz.</p>
<blockquote><p>mkdir facebook</p></blockquote>
<p>indirdiğimiz sıkıştırılmış dosyayı açıyoruz.</p>
<blockquote><p>tar -zxvf facebook-platform.tar.gz</p></blockquote>
<p>oluşturduğumuz <strong><em>facebook</em></strong> klasörünün içine oluşan facebook-platform dizininde php klasorununun içini tamamen kopyalayıp <strong><em>cakephp/app/vendors/facebook</em></strong> klasorunun içine aktarıyoruz</p>
<blockquote><p>cp -r /home/mumi/indirilenler/facebook-platform/php/* /var/www/cakephp/app/vendors/facebook/.</p></blockquote>
<p>Cakephpde controllerlar controller sınfından türetilir. app_controller sınıfıda controller sınıfında türetilir. app_controller sınıfı boş tanımlanmıştır. Cakephp de oluşturduğumuz controllerları app_controller dan türetiyoruz.</p>
<p>Eğer kendi app_controllerımızı kullanmak istiyorsak bunu <strong><em>cakephp/app/controller</em></strong> içinde tanımlamamız gerekli. Bunu neden yapmak isteyebiliriz diye sorarsanız. Bazı controller larımız aynı fonksiyona gereksinim duyabilir ve hepsi için ayrı ayrı yazmak istemeyiz. Nasılsa bütün controllerlarımız app_controller sınıfından türetildiğine göre bu fonksiyonu sadece app_controller sınıfnda tanımlarsak, otomatikmen tüm sınflarda bu fonksiyon tanımlanmış olur.</p>
<p>Biz kendi app_controller ımızı oluşturalım. Facebook kütüphanesini bu sınıfın içinde çağıralım ki tüm sınıflara aktarılsın.<br />
cakephp/app/conroller içine app_controller.php oluşturalım ve içine aşağıdakileri yazalım.</p>
<pre class="brush: php">&lt;?php
/* Facebook kutuphanelerini import ediyoruz. */
App::import('Vendor', 'facebook'.DS.'facebook');
class AppController extends Controller {
    var $facebook;

    var $__fbApiKey = ' uygulamanizin facebook api anahtari ';
    var $__fbSecret = ' uygulamanızın gizlilik anahtari ';

    function __construct() {
        parent::__construct();

        /* 'Undefined index: facebook_config' uyarısını almamak icin bos atama yapiyoruz. */
        $GLOBALS['facebook_config']['debug'] = NULL;

        /* Facebook client API nesnesi olusturuyoruz. */
        $this-&gt;facebook = new Facebook($this-&gt;__fbApiKey, $this-&gt;__fbSecret);
    }
}
?&gt;
</pre>
<p>Facebook uygulama anahtarı ve gizlilik kodu almak için facebook developers uygulamasını profilimize eklemiş olmanız gerekli. Bunun için <a href="http://www.facebook.com/developers/" target="_blank">http://www.facebook.com/developers/</a> sayfasını açıp uygulamaya izin ver diyoruz. Bundan sonra yeni uygulama oluşturmak için sağ üst köşede bulunan <strong><em>Yeni Uygulama Oluştur</em></strong> düğmesine tıklıyoruz.</p>
<p>Sonraki adımda uygulamamızın adını girip facebookun şartlarını okuyup kabul ettikten sonra ( kabul etmediyseniz anlatımın gerisini okumanıza pek gerek kalmayacak <img src='http://www.mmaydin.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) <strong><em>create application</em></strong> düğmesine basıyoruz.</p>
<p>Açılan sayfada facebook API anahtarı ve gizli yazan bölümleri <strong><em>app_controller</em></strong> içinde tanımladığımız değişkenlere yazıyoruz.</p>
<p>Artık olusturacağımız uygulamayı yazmaya geldi. Uygulamamız sadece giren facebook kullanıcısının arkadaşlarının resimlerini ekrana basacak.</p>
<p>ilk önce arkadaslarının gosterilecigi sinfinin modelini olusturalım.</p>
<p><strong><em>cakephp/app/models/</em></strong> dizinin altına <strong><em>arkadaslar.php</em></strong> diye bir dosya olusturalim.</p>
<pre class="brush: php">&lt;?php
class Arkadaslar extends AppModel {
    var $name = 'Arkadaslar';
    var $useTable = false; /* Arkadaslar tablomuz olmadigi icin kullanmayacagimizi belirtiyoruz. */
}
?&gt;
</pre>
<p><strong><em>cakephp/app/controllers/</em></strong> dizinin altına <strong><em>arkadaslars_controller.php</em></strong> diye bir dosya olusturalim.</p>
<pre class="brush: php">&lt;?php
class ArkadaslarsController extends AppController {
    /* facebook kullanicisini tutacagimiz degisken */
    var $kullanici;

    /* beforeFilter fonksiyonu ozel bir fonksiyondur.Bu siniftan cagirilan her fonksiyondan once bu fonksiyon calistirilir. */
    function beforeFilter() {
        /* Facebook a login olup olmadigini sorgular. Giren kisinin arkadaslarini gosterebilmemiz icin facebook ta login olmasi gerekir. Eger bole bir gereksinimimiz olmasaydi disardan erisimlere acik bir uygulama yapabilirdik */
        $this-&gt;kullanici = $this-&gt;facebook-&gt;require_login();
    }

    /* view kisminda kullacagimiz sayfanin ismi de bu fonksiyonla ayni olmak zorunda*/
    function index() {
        /* Facebook tan kullanicinin arkadaslari bilgisi aliniyor. */
        $arkadaslar = $this-&gt;facebook-&gt;api_client-&gt;friends_get();
        /* Facebooktan aldigimiz arkadas bilgisinin arkadaslar degiskenine set ettik. Bu degiskeni arkadas view imizda kullanabilecegiz. */
        $this-&gt;set('arkadaslar', $arkadaslar);
    }
}
?&gt;
</pre>
<p>Şimdi view bölümünü oluşturmamız gerekli. Bunun içinde <strong><em>cakephp/app/views/</em></strong> dizinin altında <strong><em>arkadaslars</em></strong> dizini oluşturmamız gerekli.</p>
<blockquote><p>mkdir /var/www/cakephp/app/views/arkadaslars</p></blockquote>
<p>Bu dizinin içine <strong><em>index.ctp</em></strong> adinda bir dosya oluşturalım. İçine aşağıdakileri yazalım.</p>
<pre class="brush: php">&lt;p&gt;Arkadaslarim:&lt;/p&gt;
&lt;style type="text/css"&gt;
     li.mini-kafa { display:block; }
     ol.mini-kafalar {margin: 0; padding: 0;}
     ol.mini-kafalar li {float:left; margin: 0 5px 5px 0; list-style-type:none; width: 50px; height: 50px;}
&lt;/style&gt;
<ol class="mini-kafalar">
    &lt;?php foreach ($arkadaslar as $arkadas)  { ?&gt;
         &lt;li class="mini-kafa"&gt;
                 <!-- fb:profile-pic etiketi uye idsini verdigimiz kisinin fotografinin bize dondurur. -->
                 <fb:profile-pic uid="&lt;?php echo $arkadas; ?&gt;" size="square" linked="true">
                 </fb:profile-pic>
        &lt;/li&gt;
    &lt;?php } ?&gt;
</ol>
</pre>
<p>Uygulamamızı ilk açtığımızda ana sayfamızın giren kullanıcının arkadaşlarını gösteren sayfanın olmasını istiyorsak <strong><em>/cakephp/app/config/routes.php</em></strong> dosyasını değiştirmemiz gerekli.</p>
<blockquote><p>Router::connect(&#8216;/&#8217;, array(&#8216;controller&#8217; =&gt; &#8216;pages&#8217;, &#8216;action&#8217; =&gt; &#8216;display&#8217;, &#8216;home&#8217;));</p></blockquote>
<p>satırı bulup şu şekilde değiştirelim.</p>
<blockquote><p>Router::connect(&#8216;/&#8217;, array(&#8216;controller&#8217; =&gt; &#8216;arkadaslars&#8217;, &#8216;action&#8217; =&gt; &#8216;index&#8217;));</p></blockquote>
<p>böylece uygulamızın giriş sayfası <strong><em>arkadaslars</em></strong> sınıfının index fonksiyonu olmasını sağladık.</p>
<p>Cakephp nin ön tanımlı debug modu açık olarak gelir. Bu debugları kullanıcıların görmemesi gerekir. Bu yüzden debug modu kapatıyoruz. Bunun için de <strong><em>/cakephp/app/config/core.php</em></strong> sayfasında şu değişikliği yapmamız gerekli.<br />
Bu satırı</p>
<blockquote><p>Configure::write(&#8216;debug&#8217;, 2);</p></blockquote>
<p>Şununla değiştirelim.</p>
<blockquote><p>Configure::write(&#8216;debug&#8217;, 0);</p></blockquote>
<p>Böylece debug modu kapatmış olduk.</p>
<p>Şimdi basit bir template hazırlayalım.Bizim template imiz sadece view kısmınından gelen veriyi ekrana basacak. İsterseniz siz uygulamanızın header ve footer kısmını da buraya dahil edebilirsiniz, bu size her yerde header ve footer bölümlerini yazmanızı engelleyecektir.<br />
<strong><em>cakephp/app/views/layout/</em></strong> dizini içine <strong><em>default.ctp</em></strong> isimli bir dosya oluşturup içine şunları yazalım.</p>
<pre class="brush: php">&lt;?php
echo $content_for_layout;
?&gt;
</pre>
<p>Uygulamamızın facebook ta tam olarak gözükmesi için son bir düzenleme kaldı o da developers uygulamasına girip oluşturduğumuz uygulama ayarlarından canvas sekmesine gelip <strong><em>Geniş Sütun URL Bağlantısı</em></strong> bölüme uygulama adını yazmak , <strong><em>Canvas Callback URL</em></strong> olan bölüme de cakephp ile oluşturduğumuz sayfaları tutan yeri söylemek<br />
( örneğin <strong><em>http://code.mmaydin.com/cakephp-ornek/</em></strong> ) ve <strong><em>Görüntüleme Yöntemi</em></strong> seçenegini <strong><em>FBML</em></strong> yapmak(eğer bu seçeneği FBML yapmazsak fbml etiketlerimiz çalışmaz ve kullanıcıların resimlerini alamayız).</p>
<p>Şimdi uygulamamızı test etmeye geldi.<br />
Örnek uygulamaya <a href="http://apps.facebook.com/cakephp-ornek" target="_blank">bu adresten</a> uygulamanin kaynak koduna <a href="http://www.mmaydin.com/wp-content/uploads/2009/12/cakephp-facebook-application.tar.gz" target="_blank">burdan</a> ulaşabilirsiniz.</p>
<p>Örnek uygulamanın ekran görüntüsü;<br />
<a href="http://www.mmaydin.com/wp-content/uploads/2009/12/cakephp-ornek-e1261868778441.png"><img src="http://www.mmaydin.com/wp-content/uploads/2009/12/cakephp-ornek-e1261868778441.png" alt="Facebook cakephp-ornek uygulamasının ekran görüntüsü" title="facebook cakephp-ornek uygulaması" width="800" height="600" class="aligncenter size-full wp-image-63" /></a></p>
<p><strong>NOT:</strong> Kaynak kodun <strong><em>cakephp-ornek/app/controller/app_controller.php</em></strong> dosyasında uygulamanın api anahtarını ve gizli numarasını değiştirdiğiniz taktirde uygulamanız hazır duruma gelecektir.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mmaydin.com/2009/12/cakephp-ile-facebook-application-yapimi/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

