Öncelikle facebook developer toolkit ile dll leri projemize atalım.
http://facebooktoolkit.codeplex.com/releases/view/39727 buradan facebook dll lerini indirebilirsiniz.
Bir facebook uygulaması yazmak için facebook da 2 yöntem bulunmaktadır.Bunlar IFrame ve FBML dir.
IFrame ile normal sayfa tasarımı yapabilirsiniz.Fakat FBML size hazır kodlarıyla birçok bilgiliyi kolayca erişmenizi sağlamaktadır.
Öncelikle bir facebook uygulaması oluşturalım.
http://www.facebook.com/developers/apps.php adresine girerek kendinize bir uygulama oluşturun.
1.ilk ekran uygulama ismi . (istediğiniz ismi girebilirsiniz.fakat içinde facebook,face gibi yazı olmamalı)
koşulları kabul ediyorum diyerek uygulamayı oluşturun.
2.acılan sayfadaki apikey ve api secret ı ve uygulama id sini kaydedin.
ilk sayfada (temel) detaylı birşey anlatmayacağım .uygulamamızın calısmasına engel olacak bir bilgi içermemektedir.
3.Doğrulama tab'ına girdiğimizde burada bulunan Post-Authorize Callback URL kullanıcı uygulamayı ilk kullandığında gideceği adresiniz.bu sayfa gözükmez ve acıldıktan sonra default sayfasına yönlenir..kayıt işlemlerini bu sayfada yapabilirsiniz.
http://www.benimadresim.com/PostAuthorizeCallback.aspx seklinde yazabilirsiniz.
Gönderi silinmiş. Tarayınızın Url Kısmına Dönün. kısmı ise kullanıcı uygulamanızı sildiğinde cağırılan sayfadır.burada ise kullanıcıyı db 'nizden silme işlemini yapabilirsiniz.Yine bu sayfa ekranda gözükmeyecektir.
4.Profiller kısmında sekmeadı na giriceğiniz isim önemli.Uygulamanızın adını buraya girin.
sekme url sine ise uygulamanızın ilk olarak hangi sayfayı calıstıracağına karar veriyorsunuz.(ör:Default.aspx)
5.Tuval: Geniş Sütun URL Bağlantısı uygulamanızın erişim bağlantısı olacaktır.
yani:http://apps.facebook.com/benimuygulamam/
Tablo Geri Arama URL:www.benimsayfam.com
Görüntüleme yöntemini fbml olarak seçin şimdilik.
şimdilik bu ayarlar yeterli.
yeni projemizin web config acıyoruz. ve
appSettings>
add key="ApiKey" value="appkeyinizi"/>
add key="Secret" value="appsecretinizi"/>
add key="ApplicationId" value="appidnizi."/>
/appSettings>
(< işaretini başalarına koyun blog da gözükmediği için koyamadım)
bunları koyuyoruz.
bir tane class oluşturun ismi Config.cs olsun bu işlerimiz kolaylaştıracak.
içeriği;
public static string APIKey { get { return ConfigurationManager.AppSettings["APIKey"]; } }
public static string Secret { get { return ConfigurationManager.AppSettings["Secret"]; } }
olacak.
Şimdi benim en çok uğraştığım ve hata veren kısımları size anlatacağım.
1.Şimdi uygulamada kullanacağınız sayfada body tag ı var ise bunu kaldırın.facebook bu body kısmına takmış durumda.
2.Eğer açılacak sayfada facebook un arkadaş daveti , messagebox ı dialog box ı gibi objeleri kullanacaksınız sayfanızın aspx tarafındaki form tag'ınıda kaldırmak durumundasınız.ör:friendselecter form tagını kaldırmadan kullanırsanız arkadaş secemiyorsunuz seçince kaldıramıyorsunuz davet gönderemiyorsunuz.tüm bunların sorumlusu Form daha doğrusu runat="server" dır.
işin ilginç yanı ise su form tag'ını kaldırırsanız asp buttonları labelları vs.. bunlar facebook sayfanızda calısmayacakdır ve hata verecektir.
ama client buttonları kullanabilirsiniz.bunda bi sorun olmaz..
size önerim facebook un bu özel dialoglarını kullanacaksanız bunarlı ayrı sayfalarda yapmanızdır.
projemize devam edelim.
facebook dll lerini usinglere ekleyin.
yine facebook da bir sayfa kullanabilmek için 2 yöntem bulunmaktadır.
1.sayfanızı CanvasFBMLBasePage kalıtmak yani :public partial class _Default : CanvasFBMLBasePage
master page için ise CanvasFBMLMasterPage
bu sayfada api key ve secretlerinızı sayfa tanımlayacak ve işlemlerinizi kolaylıkla yapmanızı sağlayacakdır.
sayfanızı bu sekilde kalıttıktan sonra
sayfanızın ilk basına
protected void Page_PreInit(object sender, EventArgs e)
{
base.RequireLogin = true;
}
bunu ekleyin.bu method eğer kullanıcının app'nızı eklemeden işlem yapmanızı istemiyorsanız kullanacağınız method 'dur.bu method sayesinde facebook un "izin ver" ekranı cıkar.ve bundan sonra PostAuthorizeCallback.aspx sayfanıza yönlenir.
tabi uygulamanızın herkes tarafından uygulamayı eklemeden ve kullanıcıyla ilgili işlem yapmadan bir sayfanızın gözükmesini istiyorsanız bunu false yapabilirsiniz ör: hakkında.aspx
artık kullanıcının bazı bilgilerine erişebilirsiniz
ör:long uid = (long)base.Api.Users.GetInfo().uid;
size kullanıcının facebook user id sini getirir.
kullanıcının daha fazla bilgisine erişim için izin ekranını getirmeniz gerekiyor.bunuda facebook un javascriptiyle yapabilirsiniz.
Facebook.showPermissionDialog('publish_stream', 'function_ondone', 'showProfileSelector', [<%=UserId%>]);
bu kodu aspx kodunun <_script /> tagına eklediğinizde kullanıcıdan stream yayınlama yetkisini istersiniz.böylece kullanıcının sayfasına mesaj gönderebilirsiniz.
bu bilgiler size ışık tutacaktır.
şimdi en başa dönüyorum ve sayfamızı eğer CanvasFBMLBasePage den kalıtmaz iseniz;
CanvasSession fs = new Facebook.Session.FBMLCanvasSession(Config.APIKey, Config.Secret);
Api api = new Api(fs);
buradaki Config daha önce oluşturmanızı istediğim class'tir.
yine
string name=api.Users.GetInfo().name; ile artık kullanıcının bilgilerini alabilirsiniz.