25 Ekim 2014 Cumartesi

FacebokClient sınıfı

Sosyal medya alemini kasıp kavurmaya devam eden Facebook sadece kullanıcıları değil biz geliştiricileri de düşünerek bir çok SDK’yı bizlere sunuyor bu gün sizlere FacebookClient sınıfının metotlarından bahsedeceğim öncelikle projemize Facebook SDK’yı projeye dahil edelim.

Ben bu yazıyı yazdığımda version 6.8.0 sürümü aktif sizde dilerseniz bu sürümü veya üst sürümlerini kullanabilirsiniz.

Solution Explorer kısmından References sağ tıklayıp Manager NuGet Packages tıplayıp search kısmına Facebook sdk yazıyoruz ve Install diyoruz.
Facebook sdk’yı projeye dahil ettikten sonra yeni bir sınıf oluşturup bir önceki makalede almış olduğumuz App ID ve App Secret keylerini bu sınıfta kullanacağız.
Dört tane private değişkenimiz olucak bunlar
AppId  ve SecretId
CallBackUrl= developers.facebook.com da  uygulamanıza girip Settings > Advanced sayfasında Deauthorize Callback URL kısmına yazmış olduğunuz Url bu değişkene yazıcaz böylece biz kendi web projemizden gönderdiğimiz link facebook a gidip app id ve secret kontrol edip tekrar vermiş olduğumuz url’ye yönlendirilcek…
Ve son değişkenimiz…
Scope= Kullanıcının hangi bilgilerine ihtiyaç duyduğumuzu bu değişkende belirticez kullanıcı da size bu bilgileri almanız için izin vericek. Biz bu örnekte sadece user_about_me  ve email  Access tokenslerini kullanıcaz. Bu sayfadan diğer tokensleri görebilirsiniz.
Buradan sonrasını kodların üst kısımlarında açıklama şeklinde devam edicez...
  //facebooktan gelen kullanıcı bilgilerini yükleyeceğimiz nesnemiz…
    public class FacebookProfile
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public string LastName { get; set; }
        public string Mail { get; set; }
    }
  public class FacebookService
    {
        // facebook app id
        private string AppId = "783828931674793";
        //facebook app secret id
        private string AppSecret = "45d1e79ef55576f3601a651fe9ddfc64";

        // Facebook login için kullanıcıyı facebook'a yönlendirirsiniz. Daha sonra kullanıcı gerekli
        // izinleri verdikten sonra facebook o kullanıcıyı size yönlendirir. CallBackUrl ile
        //siz facebook'a kullanıcıyı şu adresime yönlendir diyorsunuz.
        private string CallbackUrl = "http://localhost:57871/Home/FacebookSayfa";

        // Kullanıcının hangi bilgilerine ihtiyaç duyduğunuzu scope ile belirtirsiniz ve
        // kullanıcı da size bu bilgileri alabilmeniz için izin verir.
        private string Scope = "user_about_me,email";

        // Sdk'in sağladığı sınıftır.
        FacebookClient fb = new FacebookClient();

        // Bu metod ile kullanıcıyı yönlendireceğiniz facebook url'i oluşur
        public Uri CrateLoginUrl()
        {
            return fb.GetLoginUrl(
                                new
                                {
                                    client_id = AppId,
                                    client_secret = AppSecret,
                                    redirect_uri = CallbackUrl,
                                    response_type = "code",
                                    scope = Scope,

                                });
        }

        // AccessToken facebook'un size verdiği erişim kodudur. OAuth konusuna bakarsanız ne olduğunu daha iyi anlayabilirsiniz.
        public dynamic GetAccessToken(string code, string state, string type)
        {
            dynamic result = fb.Post("oauth/access_token",
                                  new
                                  {
                                      client_id = AppId,
                                      client_secret = AppSecret,
                                      redirect_uri = CallbackUrl,
                                      code = code
                                  });
            return result.access_token;
        }

        // Kullanıcı bilgileirni çektiğimiz metod
        public FacebookProfile GetUserInfo(dynamic accessToken)
        {

            var client = new FacebookClient(accessToken);
            var profile = new FacebookProfile();

            // "/me" yerine kullanıcının facebook id'sini de yazabilirsiniz. Ama zaten "me", o an uygulamayı kullanan kullanıcının kendisi oluyor.
            dynamic me = client.Get("/me");

            //Facebooktan gelen bilgileri oluşturduğumuz nesnemize yüklüyoruz  ve return ediyoruz
            profile.Name = me.first_name;
            profile.LastName = me.last_name;
            profile.Id = me.id;
            profile.Mail = me.email;
            return profile;
        }
    }
Sınıfımızı oluşturduktan sonra Mvc projemizde 2 action oluşturup bu metotları çağıralım.
Controller actionlarımız ilk olarak FacebookLogin actionu çağırıcağız o action facebook’a gidip ordan FacebookSayfa Actionuna düşecek ordanda View sayfamızda bilgileri yazdıracağız.

  
public ActionResult FacebookSayfa(string code, string state, string type)
        {
            //Facebook Service sınıfımızı tanımlıyoruz
            FacebookService fb = new FacebookService();

            //facebooktan return olduktan sonra bize 3 adet değer geliyor code,state ve type bunları GetAccessToken metotduna gönderiyoruz buda bize geriye AccessToken kodunu döndürüyor
            string token = fb.GetAccessToken(code, state, type);

            //tokeni tekrar GetUserInfo metotduna gönderiyoruz ve buda bize kullanıcı bilgilerinin bulunduğu FacebookProfile nesnemizi geri döndürüyor
            FacebookProfile profile = fb.GetUserInfo(token);
            return View(profile);
        }
        public ActionResult FacebookLogin()
        {
            //Facebook Service sınıfımızı tanımlıyoruz
            FacebookService fb = new FacebookService();
            //facebook url'yi oluşturup o url'ye yönlendiriyoruz
            string url = fb.CrateLoginUrl().ToString();
            return Redirect(url);
        }
Projeyi çalıştırıp http://localhost:57871/Home/FacebookLogin dediğim zaman facebook sayfasına yönlendirip benden BlogTest şu bilgilere erişebilecek izin veriyormusunuz diye panel açıldı buna tamam diyorum ve tekrar kendi localhostuma bu sefer FacebookSayfa actionuna yönlendiriliyor ve kullanıcı bilgilerini çekiyoruz.

Tekrar locallimize yönlendirdikten sonra modelden aldığımız bilgileri sayfaya yazıyoruz. Eyer daha farklı bilgilere ulaşmak istiyorsanız score kısmına eklemeniz ve FacebookProfile  nesnemize propertiesi yeterli olacaktır.

Bu bilgilerle ister facebook id ye göre sitenize üye yapabilirsiniz veya yorum kısmına direk bu isim ad soyad da yorum yapıldı yada score kısmını değiştirip kullanıcının resimlerini durumlarını vb. bilgilerini sitenizde kullanabilirsiniz.

1 yorum:

  1. Casino Table Games | Play Free Casino & Slot Games Online
    Get ready for an 원주 립 카페 amazing 인천 휴게텔 time when you can play casino table games online. Learn 벳 365 코리아 먹튀 all about casino table 케이 벳 games and 메이플 캐릭터 슬롯 our casino software.

    YanıtlaSil