Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

ASP.NET MVC 4.0 – FaceBook Nesnesi

Web sitelerinde kullanıcı bazlı kolaylık ve görsellik sağlayan hem de biz yazılımcılar için programatik esneklik ve bir o kadar da hit kazandıran FaceBook uygulamaları vazgeçilmez bir tercih oldu.Asp.NET MVC mimarisiyle Microsoft Web Helper kütüphanesi sayesinde FaceBook uygulamalarını en verimli şekilde kullanabiliriz.Lakin bildiğiniz gibi Microsoft Web Helper kütüphanesi MVC Framework’ünde varsayılan olarak gelmemektedir.Asp.NET MVC – Microsoft Web Helper Paketi Yüklenmesi başlıklı yazımda da bahsetmiş olduğum gibi Microsoft Web Helper kütüphanesini projenize entegre etmeniz gerekmektedir.

İlk olarak LikeButton özelliğini irdeleyelim.
LikeButton
Verilen Web adresini FaceBook üzerinden beğenmek için kullanılır.
Prototipi aşağıdaki gibidir.

        Facebook.LikeButton(string href,
        string buttonLayout,
        bool showFaces,
        int width,
        int height,
        string action,
        string font,
        string colorScheme,
        string refLabel);

Prototipte parametrelerin ne işe yaradıklarından bahsedelim.

buttonLayout = Beğenme butonuyla ilgili özellikleri belirler.Üç tip özelliği vardır.
“standard” : Yazı butonun sağında ve beğenen arkadaşların profil fotoğrafları ise butonun altında bulunur.Minimum genişlik 225 piksel olmakla beraber, varsayılan genişlik 450 pikseldir.Yükseklik değeri ise fotoğrafsız 35 piksel, fotoğraflı olarak 80 piksel değerlerindedir.

LikeButton“button_count” : Sadece toplam beğenme sayısı butonun sağında bulunmaktadır.Genişlik değeri minumum ve varsayılan olmak üzere 90 pikseldir.Yükseklik değeri ise 20 pikseldir.
LikeButton-button_count
“box_count” : Sadece toplam beğenme sayısı butonun üstünde bulunmaktadır.Genişlik değeri minumum 55 piksel, varsayılan değer olarak 90 pikseldir.Yükseklik ise 65 pikseldir.

LikeButton-box_count

showFaces =Sizin ve beğenen arkadaşlarınızın profil fotoğraflarının butonun altında görüntülenip görüntülenmemesini sağlar.Tabi eğer buttolLayout özelliği ‘standard’ olarak set edildiyse.

action = Buton tıklandığı anda tetiklenecek olayı belirler.’like(beğen)’ veya ‘recommend(paylaş)’ değerlerini alır.

colorScheme = Butonun rengini belirler.’light’ veya ‘dark’ değerlerini alabilir.

Örnek olarak http://www.gencayyildiz.com sitesine beğen butonu oluşturalım.

@using Microsoft.Web.Helpers;
@Facebook.LikeButton("http://www.gencayyildiz.com","box_count",colorScheme:"dark");

Action paremetresini kullanarak paylaş butonu oluşturalım.

@using Microsoft.Web.Helpers;
@Facebook.LikeButton("http://www.gencayyildiz.com","box_count",colorScheme:"dark",action:"recommend");

recommend

ActivityFeed
Verilen web sitesinin, FaceBook üzerindeki eklentilerini listeletir.Prototipi aşağıdaki gibidir,

ActivityFeed(
string site,
int width,
int height,
bool showHeader,
string colorScheme,
string font,
string borderColor,
bool showRecommendations);

Şimdi parametrelerin ne işe yaradığından bahsedelim.
showRecommendations = Etkinliklerde yapılan yorumların sayısını görüntüler.
borderColor = Etkinliklerin gösterileceği tablonun kenar rengini belirlememize yarar.

Örnek olarak önceden üzerinde çalıştığım www.e-kittap.com sitesinin etkinliklerini görüntületelim.

@using Microsoft.Web.Helpers;
@Facebook.ActivityFeed("http://www.e-kittap.com", borderColor: "Red");

Ekran görüntüsü aşağıdaki gibi olacaktır.
ActivityFeed

Initialize
Bu metod Asp.NET MVC mimarisinde, FaceBook platformunda yorum ve kullanıcı bilgilerine ulaşma gibi işlemlerde bağlantı değerleri olan appId ve appSecret değerlerini tutmaktadır.Bu yüzden çok önemlidir.

appId ve appSecret değerleri nedir diye sorarsanız eğer, gelişmiş FaceBook uygulamalarından yararlanmak istiyorsanız eğer, FaceBook sistemine uygulama geliştiricisi olarak kayıt olmamız gerekmektedir.İşte bu kayıt neticesinde bizlere FaceBook tarafından verilen appId ve appSecret değerleri tarafından uygulamamızı FaceBook ile bağdaştırabilir ve işlemlerimizi gerçekleştirebiliriz.

FaceBook platformunda uygulama geliştirici nasıl olunur?
Evet asıl yazının sıkıcı ve bir o kadar zahmetli yanı bu olsa gerek.Ancak hiç tereddüt etmeden sizlere uygulama geliştiricisi olmanın yollarının satır satır anlatacağım.

Öncelikle uygulama geliştiricisi olmak için https://developers.facebook.com/setup adresine girip appID ve appSecret değerlerimizi almalıyız.

Günümüzde her 10 kişiden 9 unun FaceBook profili var olduğundan sizlerinden profilinizin var olduğunu varsayıyorum.FaceBook profilinize kullanıcı adı ve şifreniz ile giriş yaptıktan sonra yukarıdaki bağlantıyı açınız.Karşınıza aşağıdaki gibi bir sayfa gelecektir.

Facebook1

Burada karşımıza çıkan pencerede ki, “Uygulama Adı” alanına, uygulamamıza vereceğimiz isim ve “Uygulama Ad Alanı” alanına da, uygulamamızın URL’deki ismini (www.facebook.com/uygulamaAdi gibi) veririz.Lakin buradaki bilgileri doldururken sadece “Uygulama Adı” yazan alanı doldurmanızı diğerini boş bırakmanızı tavsiye ederim.

Bu işleme “Devam” dedikten sonra karşımıza aşağıdaki gibi bir pencere gelecektir.
Facebook2Burada ki güvenliği doğruluyoruz ve “Devam” diyoruz.
Yaptığımız bu işlemler sonunda aşağıdaki gibi bir sayfa açılıyor.
Facebook3Bu sayfada sol taraftan oluşturduğumuz uygulamayı seçiyoruz ve yukarıdaki görüntüde gördüğünüz gibi “Ayarları Düzenle” isimli linke tıklıyoruz.

Facebook4Açılan sayfada gördüğünüz gibi uygulamamızın App ID ve App Secret değerlerin ulaşmış bulunmaktayız.

Şimdi bu Initialize metodunu kullanabileceğimiz alanlardan bahsedelim.

Comments
Sitemizde yayınlanan bir yazı ya da başka bir şey için FaceBook üzerinden yorum yapılmasını sağlar.

Örnek olarak aşağıdaki kod bloğunu inceleyiniz.

@using Microsoft.Web.Helpers;
@{
    Facebook.Initialize("126301***", "564254a25d***");
}
@Facebook.GetInitializationScripts();
@Facebook.Comments();

Gördüğünüz gibi Initialize metodunu bu şekilde burada kullanmış olduk.GetInitializationScripts metodu ise FaceBook uygulamalarında JavaScript kodlarını çalıştırmamıza yarar.
Ekran görüntüsü aşağıdaki gibi olacaktır.
Facebook5

LoginButtonTagOnly
Web siteniz üzerinden FaceBook hesabınıza girmenize yarayan metoddur.
Prototipi aşağıdaki gibidir.

LoginButtonTagOnly(
string buttonText,
bool autoLogoutLink,
string size,
string length,
string onLogin,
bool showFaces,
string extendedPermissions
);

Parametreleri inceleyelim.
autoLogoutLink = Profil hesabına giriş işlemi yapıldıktan sonra “Logout” butonunun gösterilip gösterilmeyeceğini belirler.
showFaces = FaceBook hesabına girenin ve o kişinin arkadaşlarının profilinin gösterilmesine yarar.
onLogin = Profil hesabına giriş yapıldıktan sonra yapılacak işlem belirlenir.Örnek olarak, giriş yapıldıktan sonra sitenizin FaceBook fan sayfasına yönlendirme yapabilirsiniz.
extendedPermissions = FaceBook’ta ki arkadaşlarımızın ve diğer kullanıcıların, FaceBook profilimizde hangi bilgilere erişebileceğini belirleriz.Read Permissions, Write Permissions ve Page Permissions olmak üzere üç tip erişim izni mevcuttur.Bunlar sırasıyla aşağıdaki tablolarda verilmiştir.

Read Permissions
User Permission Friends Permission Açıklama
 user_about_me  friends_about_me  Profildeki “Bilgiler” alanına erişim sağlar.
 user_activities  friends_activities  Profildeki “Yakınlardaki Hareketler” alanına erişim sağlar.
 user_birthday  friends_birthday  Profildeki doğum tarihine erişim sağlar.
 user_checkins  friends_checkins  Yetkili kullanıcının ya da arkadaşlarımızın belirlediği kişilere erişim sağlar.
 user_education_history  friends_education_history  Profildeki eğitim durumuna erişim sağlar.
 user_events  friends_events  Profildeki “Etkinlikler” bölümüne erişim sağlar.
 user_groups  friends_groups  Profildeki grupların listesine erişim sağlar.
 user_hometown  friends_hometown  Profildeki memlekete erişim sağlar.
 user_interests  friends_interests  Profildeki “İlgilendikleri” alanına erişim sağlar.
 user_likes  friends_likes  Beğenilen sayfa, etkinlik vs. listesine erişim sağlar.
 user_location  friends_location  Geçerli konum bilgisine erişim sağlar.
 user_notes  friends_notes  Profildeki “Notlar” alanına erişim sağlar.
 user_online_presence  friends_online_presence  Kullanıcının online – offline durum bilgisine erişim sağlar.
 user_photo_video_tags  friends_photo_video_tags  Kullanıcı tarafından etiketlenmiş olan fotoğraf ve video bilgilerine erişim sağlar.
 user_photos  friends_photos  Kullanıcı tarafından yüklenmiş olan fotoğraflara erişim sağlar.
 user_relationships  friends_relationships  Profildeki “İlişki Durumu” alanına erişim sağlar.
 user_relationships_details  friends_relationships_details  Profildeki “İlişki Durumu” alanının detaylarına erişim sağlar.
 user_religion_politics  friends_religion_politics  Profildeki “Siyasi Görüş” alanına erişim sağlar.
 user_status  friends_status  Kullanıcının durumu ile ilgili son mesaja erişim sağlar.
 user_videos  friends_videos  Kullanıcı tarafından yüklenmiş olan videolara erişim sağlar.
 user_website  friends_website  Profildeki web adresine erişim sağlar.
 user_work_history  friends_work_history  Kullanıcının çalışma geçmişine erişim sağlar.
 user_email  Ulaşılamaz  Kullanıcının E-Posta adresine erişim sağlar.
 user_friendlist  Ulaşılamaz  Kullanıcının arkadaş listesine erişim sağlar.
 user_insights  Ulaşılamaz  FaceBook istatistik servisinin sağladığı verilere erişim sağlar.
 user_mailbox  Ulaşılamaz  FaceBook gelen mail kutusuna erişim sağlar.
 user_requests  Ulaşılamaz  Kullanıcının arkadaşlık isteklerine erişim sağlar.
 user_stream  Ulaşılamaz  FaceBook haber kaynağı içerisindeki verilere erişim sağlar.
 user_login  Ulaşılamaz  Kullanıcın FaceBook chat uygulaması için oturum açabilmesini sağlar.
 user_management  Ulaşılamaz  FaceBook reklamları ile ilgili api’leri yönetebilmeyi sağlar.
Write Permissions
Permission Açıklama
 publish_stream  Uygulamanızda arkadaşlarınızın gönderdiği yorumlara, beğendikleri ya da paylaştıkları içeriklere erişim sağlar.
 create_event  Uygulamanızın kullanıcılar adına etkinlikler oluşturmasını ve etkinlikler üzerinden düzenleme yapmasını sağlar.
 rsvp_event  Uygulamanızın kullanıcılar adına etkinlikler için katılım durumu bağlantısı ekleyebilmesini sağlar.
 sms  Uygulamanızın kullanıcıya sms mesajları gönderebilmesini ve kullanıcıdan gelen mesajları yanıtlayabilmesini sağlar.
 offline_access  Uygulamanızın kullanıcı adına herhangi bir zamanda, yetki verilen istekleri gerçekleştirmesine olanak sağlar.
 publish_checkins  Uygulamanızın kullanıcı adına, erişim sağlanabilecek kişileri belirlemesini sağlar.
 manage_friendlists  Uygulamanızın kullanıcının arkadaş listelerini oluşturabilmesini ve bu listeler üzerinde düzenlemeler yapabilmesini sağlar.
Page Permissions
Permissions Açıklama
 manage_pages  Uygulamanızın sayfalar üzerinde yönetici seviyesinde işlem yapabilmesi için ‘access_tokens‘ almasını sağlar.Bu izin ‘Graph API‘ ile uyumludur.
Bu tabloyu bize “Asp.NET MVC 4” isimli kitabında sundukları için Volkan Aktaş ve Tahsin Sevinç’e kendim ve okuyucularım adına teşekkürlerimizi sunarım.

Şimdi örnek olarak LoginButtonTagOnly metodunu kullanarak kendi web projemiz üzerinden FaceBook hesabımıza giriş yapılışını görelim.

@using Microsoft.Web.Helpers;
@{
    string URL = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority);
    //Bulunulan sayfanın URL bilgisi.

    Facebook.AppId = "126301***";
    Facebook.AppSecret = "564254a***";
}

@Facebook.GetInitializationScripts();
@Facebook.LoginButtonTagOnly("FaceBook'a Giriş Yap", true, "long", "shor", "loginRedirect('" + @URL + "')", true, "email");

LiveStream
Bu metod sayesinde sitemizi ziyaret eden kullanıcıların yorum gönderebilmelerini ve etkinlikleri paylaşabilmelerini sağlayabiliriz.
Prototipi aşağıdaki gibidir,

LiveStream(
int width,
int height,
string xid,
string viaUrl,
bool alwaysPostToFriends
);

Bazı parametrelerin bahsedersek eğer,
xid = Bir sayfada birden fazla LiveStream metodu çalışıyorsa eğer, her biri birbirinden benzersiz xid değeri alır.
viaUrl = Uygulamanın üzerine tıklandığında yönlendirilecek olan bağlantı belirtilir.Eğer belirtilmezse varsayılan olarak o andaki URL adresi kullanılır.
alwaysPostToFriends = Kullanıcıların yazdıkları mesajlarının kendi profillerinde görüntülenmesini sağlar.

@using Microsoft.Web.Helpers;
@{
    Facebook.Initialize("126301597569314", "564254a25dc9425aa7893100e2d3d886");
}

@Facebook.GetInitializationScripts();
@Facebook.LiveStream();

Biliyorum, yazı hem çok uzun hem de çok sert bir içerikten oluşmaktadır.Ama parça parça bu konu hakkında detaya girmektense hepsini bu şekilde derleyip okuyucularıma sunmayı tercih ettim.

Umarım birşeyler aktarabilmişimdir.
Faydalanmanız dileğiyle..
İyi çalışmalar..

Bunlar da hoşunuza gidebilir...

9 Cevaplar

  1. onur dedi ki:

    Anlatmak mı araklamak mı? Açmış, Volkan Aktaş’ın kitabını olduğu gibi yazmışsın.

    • Gençay dedi ki:

      Olduğu gibi demek yanlış olur.Sonuçta kaynak olarak o kitaptan oldukça yararlandım.Kendim için okudum yorumladım ve okuyucularımla paylaşmak için o kitaptan yardım alarak bu konuyu yorumladım.Sonuçta üstadlar daha anlaşılır bir hiyerarşide konuyu sunmuşlar haliyle bende bunu modelledim.Lakin sizin açınızdan bir problem teşkil ediyorsa internette başka bir kaynak bularak yararlanabilirsiniz.

      Bu blok %99 özgün bir yapıya sahiptir.Kimse bir kaynağı modellemeden teorik olarak bir anlatım yapamaz.Tabi ki de o işin üreticisi ya da sanatçısı değilse.Anlatım sıralamasından dolayı ve bir kaç cümle benzerliğine dayandırarak bu paylaşımı “Araklamak” olarak nitelendiriyorsanız sizin niyetiniz benim niyetime dil uzatmaktır.Haliyle benim amacımla sizin anlayışınız paralel olmadığı için burada böyle bir tepki vermeniz gayet doğal.Lakin neyle itham ediyorsanız edin ama piyasada ki Türkçe kaynak sıkıntısını göz ardı etmeden buradan yapılan emeğede saygıyla ve yakışır şekilde yaklaşın.

  2. kadoxi dedi ki:

    hocam bu butonları nasıl türkçeleş tireceğiz teşekkürler

  3. alper demir dedi ki:

    hocam paylaştıkça bilgi çoğalır. Emeğiniz için teşekkürler.

    bu metnin videolu anlatımızı yaparsanız tatından yenmez hocam. oku oku karıştırdım hepten.

    • Gençay dedi ki:

      Teşekkür ederim Alper Bey,
      Video meselesi zamanla olacak iş.Haliyle yoğunluk sebebiyle videolara söz verdiğim tarihlerde başlamak pek mümkün olmadı.Biliyorsunuz ki, ben videolara hiyerarşik bir konu takibinden devam ediyorum.

      Bu işin zor yanlarından birisi bu müzdarip olduğunuz durum.Haliyle video gibi materyallerin olmaması bizim konuları takip etmemizi oldukça zorlaştırıyor.Ama ne yazık ki okuyarak bazı konuların üstesinden gelmeyi öğrenmemiz gerekmektedir.Özellikle bu alanda.

      Saygılarımla..

  4. Batı dedi ki:

    Sevgili Gencay kardeşim bir yazılımcı olarak seni tebrik ederim.En çok sitene uğramamın sebebi geniş anlatıma sahip olman..Başarıların devamını dilerim emeğine sağlık..

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir