﻿
{"id":2745,"date":"2014-06-10T13:05:08","date_gmt":"2014-06-10T13:05:08","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=2745"},"modified":"2014-06-10T13:05:08","modified_gmt":"2014-06-10T13:05:08","slug":"asp-nette-facebook-login-uygulamasi","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/asp-nette-facebook-login-uygulamasi\/","title":{"rendered":"Asp.NET&#8217;te Facebook Login Uygulamas\u0131"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>G\u00fcn\u00fcm\u00fcz pop\u00fcler sitelerinde ziyaret\u00e7ilere kolayl\u0131k olmas\u0131 a\u00e7\u0131s\u0131ndan yeni sistemler geli\u015ftirilmektedir.Web siteleri yap\u0131sal anlamda kullan\u0131c\u0131 giri\u015f \u00e7\u0131k\u0131\u015flar\u0131n\u0131 kontrol ederken ziyaret\u00e7ilere b\u00fcy\u00fck emek ve zahmet ettirmektedirler.B\u00f6yle bir durum ziyaret\u00e7iler a\u00e7\u0131s\u0131ndan kalite ve prestij kayb\u0131 demektir.Hele hele g\u00fcn\u00fcm\u00fcz teknolojik yap\u0131s\u0131, ileti\u015fim h\u0131z\u0131 ve internetin b\u00fcy\u00fck h\u0131z limiti, kullan\u0131c\u0131 ve ziyaret\u00e7iler a\u00e7\u0131s\u0131ndan zaman olarak minimize edilmi\u015f bir i\u015flemsel yap\u0131 beklentisi do\u011furmaktad\u0131r.Bu beklentileri kar\u015f\u0131layabilmemiz i\u00e7in web sitelerinde kullan\u0131c\u0131 giri\u015f ve \u00e7\u0131k\u0131\u015flar\u0131n\u0131 h\u0131zland\u0131racak sosyal platformlar devreye sokulmu\u015ftur.Sitemize giri\u015f yapmak isteyen ziyaret\u00e7ilere varsa Facebook profilleri sayesinde giri\u015f yapma olana\u011f\u0131 tan\u0131nmaktad\u0131r.Bunun yan\u0131nda manuel olarak kullan\u0131c\u0131 kay\u0131t ve giri\u015f i\u015flemleride ziyaret\u00e7ilere sunulabilmektedir.Bizler bu yaz\u0131m\u0131zda Asp.NET&#8217;te yap\u0131lan web projelerinde Facebook Login&#8217;in teknik anlamda nas\u0131l yap\u0131laca\u011f\u0131n\u0131 inceleyece\u011fiz.<br \/>\n<!--more--><br \/>\n\u00d6ncelikle, konumuza de\u011finirken \u00f6rneklendirece\u011fimiz bir Asp.NET projesi a\u00e7t\u0131\u011f\u0131m\u0131z\u0131 varsayal\u0131m.<\/p>\n<p>Asp.NET ile Facebook Login i\u015flemini ger\u00e7ekle\u015ftirebilmemiz i\u00e7in &#8220;Facebook&#8221; isimli SDK&#8217;ya ihtiyac\u0131m\u0131z bulunmaktad\u0131r.O y\u00fczden ilk olarak, projemize sa\u011f t\u0131kl\u0131yoruz ve &#8220;Manage NuGet Packages&#8221; yazan sekmeye t\u0131kl\u0131yoruz.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2749 size-full\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login.png\" alt=\"asp.net - facebook login\" width=\"405\" height=\"358\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login.png 405w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-300x265.png 300w\" sizes=\"auto, (max-width: 405px) 100vw, 405px\" \/><\/a><br \/>\nKar\u015f\u0131m\u0131za \u00e7\u0131kan pencerede sa\u011f \u00fcst k\u00f6\u015fedeki arama kutusuna &#8220;facebook&#8221; anahtar s\u00f6zc\u00fc\u011f\u00fcn\u00fc yaz\u0131yor ve arat\u0131yoruz.Tabi burada dikkat etmeniz gereken sol men\u00fcdeki &#8220;Online&#8221; -&gt; &#8220;Search Results&#8221; kategorisi se\u00e7ili olmas\u0131 gerekiyor.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2751 size-full\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-2.png\" alt=\"asp.net - facebook login 2\" width=\"794\" height=\"446\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-2.png 794w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-2-300x168.png 300w\" sizes=\"auto, (max-width: 794px) 100vw, 794px\" \/><\/a><br \/>\nYukar\u0131da g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi arama sonucunda Facebook SDK s\u0131 kar\u015f\u0131m\u0131za \u00e7\u0131kmaktad\u0131r.&#8221;Install&#8221; diyerek kurulum yap\u0131yoruz.<\/p>\n<p>Evet, Facebook SDK kurulumunu projemizde ger\u00e7ekle\u015ftirdik.<\/p>\n<p>\u015eimdi Facebook&#8217;ta yeni bir uygulama olu\u015fturaca\u011f\u0131z ve o uygulama \u00fczerinden sitemiz Facebook ile ileti\u015fim sa\u011flayacakt\u0131r.Facebook&#8217;ta ki profillerin kullan\u0131c\u0131 izinlerini ve kullan\u0131c\u0131lar\u0131n bilgilerine eri\u015fim hakk\u0131n\u0131 bu uygulama ile elde edece\u011fiz.<\/p>\n<p>Facebook&#8217;ta uygulamalar <a href=\"https:\/\/developers.facebook.com\/apps\/\" target=\"_blank\">https:\/\/developers.facebook.com\/apps\/<\/a> adresinden olu\u015fturulmaktad\u0131r.Bu adrese girin ve kar\u015f\u0131n\u0131za \u00e7\u0131kan erkanda &#8220;+ Create New App&#8221; butonuna t\u0131klayarak yeni bir uygulama olu\u015fturmaya ba\u015flayabilirsiniz.<\/p>\n<p>Benim olu\u015fturaca\u011f\u0131m uygulaman\u0131n ad\u0131n\u0131 &#8220;Gen\u00e7ay Y\u0131ld\u0131z | Makalelerim&#8221; olarak ayarl\u0131yorum ve kategorisini ise &#8220;E\u011fitim&#8221; olarak se\u00e7iyorum.Burada dikkat etmeniz gereken husus uygulama ad\u0131n\u0131z sitenizin ad\u0131yla ya ayn\u0131 ya da benzer yap\u0131da olmas\u0131 daha makbuld\u00fcr.Bunun sebebini yaz\u0131m\u0131z\u0131n\u0131 ilerisinde g\u00f6receksiniz.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2754 size-full\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-3.png\" alt=\"asp.net - facebook login 3\" width=\"718\" height=\"392\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-3.png 718w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-3-300x163.png 300w\" sizes=\"auto, (max-width: 718px) 100vw, 718px\" \/><\/a><br \/>\nBilgileri yukar\u0131daki gibi doldurduktan sonra &#8220;Uygulama Olu\u015ftur&#8221; butonuna t\u0131kl\u0131yoruz.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-4.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2756 size-full\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-4.png\" alt=\"asp.net - facebook login 4\" width=\"722\" height=\"449\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-4.png 722w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-4-300x186.png 300w\" sizes=\"auto, (max-width: 722px) 100vw, 722px\" \/><\/a><br \/>\nUygulamay\u0131 olu\u015fturduktan sonra yukar\u0131daki gibi &#8220;Dashboard&#8221; sayfas\u0131n\u0131n gelmesi gerekmektedir.<br \/>\nBurada g\u00f6rd\u00fc\u011f\u00fcn\u00fcz &#8220;App ID&#8221; ve &#8220;App Secret&#8221; de\u011ferleri bu uygulama ile projemiz aras\u0131ndaki ba\u011flant\u0131y\u0131 sa\u011flayacak de\u011ferlerdir.Tabi bu de\u011ferleri yaz\u0131m\u0131z\u0131n ileri sat\u0131rlar\u0131nda kullanaca\u011f\u0131z.<\/p>\n<p>Evet art\u0131k elimizde sitemizle Facebook ba\u011flant\u0131s\u0131n\u0131 kuracak Facebook uygulamas\u0131 haz\u0131r.<\/p>\n<p>Art\u0131k s\u0131ra bu i\u015fi programatik olarak \u00e7\u00f6zmeye geldi.\u00d6ncelikle Facebook bilgileriyle sitemize girecek olan kullan\u0131c\u0131n\u0131n hangi de\u011ferlerini tutacaksak ona g\u00f6re bir Facebook profil entitysi olu\u015ftural\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class FacebookProfil\r\n    {\r\n        public string ID { get; set; }\r\n        public string Adi { get; set; }\r\n        public string Soyadi { get; set; }\r\n        public string KullaniciAdi { get; set; }\r\n        public string EMail { get; set; }\r\n        public string ProfilResmi { get; set; }\r\n    }\r\n<\/pre>\n<p>\u015eimdi ise Facebook kullan\u0131c\u0131 giri\u015fi yapma talebine kar\u015f\u0131 i\u015flemlerimizi y\u00fcr\u00fctecek olan s\u0131n\u0131f\u0131m\u0131z\u0131 yazal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class FacebookIslemleri\r\n    {\r\n        \/*\r\n\r\n        Facebook uygulamam\u0131zdaki AppID ve AppSecret de\u011ferlerini buraya\r\n        yazmay\u0131 unutmamal\u0131y\u0131z.\r\n        \r\n        *\/\r\n        string AppID = &quot;253805618153090&quot;;\r\n        string AppSecret = &quot;6086406f8f02992c6e5ff1fb86918000&quot;;\r\n\r\n        string CallBackUrl = &quot;http:\/\/localhost:9640\/Profil.aspx&quot;;\r\n        \/*\r\n         \r\n         Facebook Login i\u00e7in kullan\u0131c\u0131y\u0131 Facebook'a y\u00f6nlendirirsiniz.Daha sonra\r\n         kullan\u0131c\u0131 gerekli izinleri verdikten sonra Facebook o kullan\u0131c\u0131y\u0131 size\r\n         yeniden y\u00f6nlendirecektir.CallBackUrl de\u011feri ile Facebook'a, kullan\u0131c\u0131\r\n         izin verdikten ve senle i\u015fi bittikten sonra \u015fu adresime y\u00f6nlendir.\r\n         \r\n         *\/\r\n\r\n        string Scope = &quot;user_about_me, email&quot;;\r\n        \/*\r\n         \r\n         Kullan\u0131c\u0131n\u0131n hangi bilgilerine ihtiya\u00e7 duydu\u011funuzu Scope ile belirtirsiniz.\r\n         Ba\u015fka bir deyi\u015fle kullan\u0131c\u0131n\u0131n hangi bilgilerine ula\u015fmak istiyorsan\u0131z\r\n         o bilgileri size ula\u015ft\u0131racak anahtar s\u00f6zc\u00fckleri Scope'a yazars\u0131n\u0131z.\r\n         \r\n         Tabi kullan\u0131c\u0131 onay\u0131 olmadan buradaki bilgilerin hi\u00e7birine ula\u015f\u0131m s\u00f6z\r\n         konusu de\u011fildir.\r\n         \r\n        *\/\r\n\r\n        FacebookClient FacebookIslem = new FacebookClient();\r\n        \/\/FacebookClient SDK'n\u0131n sa\u011flad\u0131\u011f\u0131 s\u0131n\u0131ft\u0131r.\r\n\r\n        public Uri CrateLoginUrl()\r\n        {\r\n            \/*\r\n             \r\n             Bu metot da kullan\u0131c\u0131dan Facebook login talebi geldin\u011finde\r\n             kullan\u0131c\u0131y\u0131 y\u00f6nlendirece\u011fimiz Facebook linkini olu\u015fturuyoruz.\r\n             \r\n             *\/\r\n\r\n            return FacebookIslem.GetLoginUrl(\r\n                                new\r\n                                {\r\n                                    client_id = AppID,\r\n                                    client_secret = AppSecret,\r\n                                    redirect_uri = CallBackUrl,\r\n                                    response_type = &quot;code&quot;,\r\n                                    scope = Scope,\r\n\r\n                                });\r\n        }\r\n\r\n        public dynamic GetAccessToken(string code, string state, string type)\r\n        {\r\n            \/*\r\n             \r\n             AccessToken Facebook'un size verdi\u011fi eri\u015fim kodudur.OAuth\r\n             konusuna bakarsak ne oldu\u011funu daha iyi anlayabiliriz.\r\n             En k\u0131sa tan\u0131mla OAuth, kullan\u0131c\u0131lar\u0131n \u00fcyesi olduklar\u0131\r\n             bir site yada platformun \u015fifresini \u00fcye olduklar\u0131 ba\u015fka\r\n             bir web sitesi yada platformla payla\u015fmadan, izin verdi\u011fi\r\n             bilgilere di\u011fer site taraf\u0131ndan ula\u015f\u0131lmas\u0131n\u0131 sa\u011flayan\r\n             bir kimlik do\u011frulama protokol\u00fcd\u00fcr.\r\n              \r\n             Yani, AccessToken kodu ile istedi\u011fimiz kullan\u0131c\u0131 bilgilerini\r\n             \u00e7ekebiliyoruz.Ne de olsa bu kod, kullan\u0131c\u0131n\u0131n istedi\u011fimiz\r\n             bilgilerini elde etmemize izin verdi\u011fini g\u00f6steriyor.\r\n             \r\n             *\/\r\n\r\n            dynamic result = FacebookIslem.Post(&quot;oauth\/access_token&quot;,\r\n                                          new\r\n                                          {\r\n                                              client_id = AppID,\r\n                                              client_secret = AppSecret,\r\n                                              redirect_uri = CallBackUrl,\r\n                                              code = code\r\n                                          });\r\n            return result.access_token;\r\n        }\r\n\r\n        public FacebookProfil GetUserInfo(dynamic accessToken)\r\n        {\r\n            \/\/Kullan\u0131c\u0131 bilgilerini \u00e7ekti\u011fimiz metod.\r\n\r\n            var client = new FacebookClient(accessToken);\r\n            var profile = new FacebookProfil();\r\n\r\n            dynamic me = client.Get(&quot;\/me&quot;);\r\n            \/*\r\n             \r\n             &quot;\/me&quot; yerine kullan\u0131c\u0131n\u0131n Facebook ID'sini de yazabilirsiniz.&quot;me&quot;\r\n             o anki kullan\u0131c\u0131y\u0131 temsil etmektedir.Yani de\u011fi\u015fen bir\u015fey yok.\r\n             \r\n             *\/\r\n\r\n            profile.KullaniciAdi = me.username;\r\n            profile.Adi = me.first_name;\r\n            profile.Soyadi = me.last_name;\r\n            profile.ID = me.id;\r\n            profile.EMail = me.email;\r\n            profile.ProfilResmi = string.Format(&quot;https:\/\/graph.facebook.com\/{0}\/picture&quot;, profile.ID);\r\n            return profile;\r\n        }\r\n    }\r\n<\/pre>\n<p>Yukar\u0131daki s\u0131n\u0131f\u0131 biraz a\u00e7\u0131klayal\u0131m.Kullan\u0131c\u0131dan Facebook login talebi geldi\u011fi zaman &#8220;CrateLoginUrl&#8221; isimli metodumuz ile Facebook&#8217;a y\u00f6nlendirilecek linki olu\u015fturuyoruz ve o linke kullan\u0131c\u0131y\u0131 y\u00f6nlendiriyoruz.Facebook i\u015flemlerini bitirdikten sonra &#8220;CallBackUrl&#8221; de\u011fi\u015fkeninde bulunan linkimize geri y\u00f6nlendirme sa\u011flamaktad\u0131r.&#8221;CallBackUrl&#8221; de\u011ferine y\u00f6nlendirirken Facebook belirli de\u011ferler \u00fczerine eklemektedir.Bu de\u011ferleri kullanarak &#8220;GetAccessToken&#8221; isimli metodumuzda kullan\u0131c\u0131n\u0131n bilgilerini payla\u015fmas\u0131na izin verdi\u011fini sembolize eden kodu elde etmekteyiz.Bu kodu ise &#8220;GetUserInfo&#8221; isimli metodumuzda i\u015fleterek, kullan\u0131c\u0131dan me\u015fru bir \u015fekilde istenen bilgiler elde edilmektedir.<\/p>\n<p>\u015eimdi ise bu s\u0131n\u0131flar\u0131 kullanaca\u011f\u0131m\u0131z .aspx dosyalar\u0131m\u0131z\u0131 haz\u0131rlayal\u0131m.<\/p>\n<p><strong>Default.aspx<\/strong> sayfam\u0131z\u0131n kodlar\u0131;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n&lt;%@ Page Language=&quot;C#&quot; AutoEventWireup=&quot;true&quot; CodeBehind=&quot;Default.aspx.cs&quot; Inherits=&quot;FaceBookLogin.Default&quot; %&gt;\r\n&lt;!DOCTYPE html&gt;\r\n&lt;html xmlns=&quot;http:\/\/www.w3.org\/1999\/xhtml&quot;&gt;\r\n&lt;head runat=&quot;server&quot;&gt;\r\n    &lt;title&gt;&lt;\/title&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n    &lt;form id=&quot;form1&quot; runat=&quot;server&quot;&gt;\r\n        &lt;asp:Button ID=&quot;btnFacebookBaglan&quot; runat=&quot;server&quot; Text=&quot;FACEBOOK BA\u011eLAN&quot; BorderColor=&quot;#CC0099&quot; ForeColor=&quot;#3333FF&quot; Height=&quot;71px&quot; Width=&quot;183px&quot; OnClick=&quot;btnFacebookBaglan_Click&quot; \/&gt;\r\n    &lt;\/form&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;\r\n<\/pre>\n<p>Default.aspx sayfam\u0131zda kullan\u0131c\u0131n\u0131n Facebook ile ba\u011flant\u0131s\u0131n\u0131 tetikleyecek butonumuz bulunmaktad\u0131r.<\/p>\n<p><strong>Profil.aspx<\/strong> sayfam\u0131z\u0131n kodlar\u0131;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n&lt;%@ Page Language=&quot;C#&quot; AutoEventWireup=&quot;true&quot; CodeBehind=&quot;Profil.aspx.cs&quot; Inherits=&quot;FaceBookLogin.Profil&quot; %&gt;\r\n&lt;!DOCTYPE html&gt;\r\n&lt;html xmlns=&quot;http:\/\/www.w3.org\/1999\/xhtml&quot;&gt;\r\n&lt;head runat=&quot;server&quot;&gt;\r\n    &lt;title&gt;&lt;\/title&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n    &lt;form id=&quot;form1&quot; runat=&quot;server&quot;&gt;\r\n        &lt;div style=&quot;text-align: center;&quot;&gt;\r\n            &lt;asp:Label ID=&quot;lblKullan\u0131c\u0131AdSoyad&quot; runat=&quot;server&quot; BorderColor=&quot;Black&quot; BorderStyle=&quot;Dotted&quot; Font-Bold=&quot;True&quot; ForeColor=&quot;#CC0000&quot;&gt;&lt;\/asp:Label&gt;\r\n            &lt;table width=&quot;50%&quot; align=&quot;center&quot;&gt;\r\n                &lt;tr&gt;\r\n                    &lt;td&gt;ID&lt;\/td&gt;\r\n                    &lt;td&gt;:&lt;\/td&gt;\r\n                    &lt;td&gt;\r\n                        &lt;asp:Label ID=&quot;lblID&quot; runat=&quot;server&quot;&gt;&lt;\/asp:Label&gt;&lt;\/td&gt;\r\n                &lt;\/tr&gt;\r\n                &lt;tr&gt;\r\n                    &lt;td&gt;Kullan\u0131c\u0131 Ad\u0131&lt;\/td&gt;\r\n                    &lt;td&gt;:&lt;\/td&gt;\r\n                    &lt;td&gt;\r\n                        &lt;asp:Label ID=&quot;lblKullaniciAdi&quot; runat=&quot;server&quot;&gt;&lt;\/asp:Label&gt;&lt;\/td&gt;\r\n                &lt;\/tr&gt;\r\n                &lt;tr&gt;\r\n                    &lt;td&gt;E-Posta&lt;\/td&gt;\r\n                    &lt;td&gt;:&lt;\/td&gt;\r\n                    &lt;td&gt;\r\n                        &lt;asp:Label ID=&quot;lblEPosta&quot; runat=&quot;server&quot;&gt;&lt;\/asp:Label&gt;&lt;\/td&gt;\r\n                &lt;\/tr&gt;\r\n                &lt;tr&gt;\r\n                    &lt;td&gt;Profil Resmi&lt;\/td&gt;\r\n                    &lt;td&gt;:&lt;\/td&gt;\r\n                    &lt;td&gt;\r\n                        &lt;asp:Image ID=&quot;imgProfilResmi&quot; runat=&quot;server&quot; \/&gt;&lt;\/td&gt;\r\n                &lt;\/tr&gt;\r\n            &lt;\/table&gt;\r\n        &lt;\/div&gt;\r\n    &lt;\/form&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;\r\n<\/pre>\n<p>Profil.aspx sayfam\u0131zda ise Facebook profilinden \u00e7ekilen bilgileri listeyece\u011fiz.<\/p>\n<p>Default.aspx sayfam\u0131z\u0131n programatik kodlar\u0131 a\u015fa\u011f\u0131daki gibidir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public partial class Default : System.Web.UI.Page\r\n    {\r\n        FacebookIslemleri Face = new FacebookIslemleri();\r\n        protected void Page_Load(object sender, EventArgs e)\r\n        {\r\n\r\n        }\r\n        protected void btnFacebookBaglan_Click(object sender, EventArgs e)\r\n        {\r\n            var Link = Face.CrateLoginUrl().ToString();\r\n            Response.Redirect(Link);\r\n        }\r\n    }\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, kullan\u0131c\u0131 Facebook ile giri\u015f talep etti\u011fi anda kullan\u0131c\u0131y\u0131 Facebook&#8217;a y\u00f6nlendirecek linki olu\u015fturuyor ve o linke Redirect ediyoruz.Bu y\u00f6nlendirme sonucunda biliyorum ki Facebook kullan\u0131c\u0131y\u0131 &#8220;http:\/\/localhost:9640\/Profil.aspx&#8221; linkine y\u00f6nlendirecektir.<\/p>\n<p>Profil.aspx sayfam\u0131z\u0131n programatik kodlar\u0131 ise;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public partial class Profil : System.Web.UI.Page\r\n    public partial class Profil : System.Web.UI.Page\r\n    {\r\n        FacebookIslemleri Face = new FacebookIslemleri();\r\n\r\n        protected void Page_Load(object sender, EventArgs e)\r\n        {\r\n                string code = Request.QueryString&#x5B;&quot;code&quot;];\r\n                string state = &quot;&quot;;\r\n                string type = &quot;&quot;;\r\n                dynamic token = Face.GetAccessToken(code, state, type);\r\n                FacebookProfil Profil = Face.GetUserInfo(token);\r\n                Session.Add(&quot;Profil&quot;, Profil);\r\n\r\n                lblEPosta.Text = Profil.EMail;\r\n                lblID.Text = Profil.ID;\r\n                lblKullaniciAdi.Text = Profil.KullaniciAdi;\r\n                lblKullan\u0131c\u0131AdSoyad.Text = Profil.Adi + &quot; &quot; + Profil.Soyadi;\r\n                imgProfilResmi.ImageUrl = Profil.ProfilResmi;\r\n        }\r\n    }\r\n<\/pre>\n<p>Burada da g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi Facebook&#8217;un Profil.aspx sayfas\u0131na y\u00f6nlendirmesi sonucu ve y\u00f6nlendirirken g\u00f6nderdi\u011fi ek bilgiler sonucu(<em>g\u00f6nderilen ek bilgi genellikle &#8220;code&#8221; isimli QueryString de\u011fi\u015fkenindedir<\/em>) me\u015fru bir \u015fekilde kullan\u0131c\u0131 bilgilerini \u00e7ekmekte ve istedi\u011fimiz \u015fekilde kullanmaktay\u0131z.<\/p>\n<p>Evet art\u0131k projemiz bitti.\u015eimdi projemizi derleyip \u00e7al\u0131\u015ft\u0131ral\u0131m.Buraya kadar yaz\u0131y\u0131 uzatmam\u0131n sebebi sizlere \u00e7al\u0131\u015ft\u0131rma zaman\u0131nda bir olas\u0131 durumdan bahsetmek istedi\u011fimdendir.Devam edelim&#8230;<\/p>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-5.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2768 size-full\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-5.png\" alt=\"asp.net - facebook login 5\" width=\"621\" height=\"194\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-5.png 621w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-5-300x93.png 300w\" sizes=\"auto, (max-width: 621px) 100vw, 621px\" \/><\/a><br \/>\nDefault.aspx sayfam\u0131z a\u00e7\u0131ld\u0131.&#8221;Facebook Ba\u011flan&#8221; butonuna t\u0131kl\u0131yorum ve&#8230;.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-6.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2773 size-large\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-6-1024x87.png\" alt=\"asp.net - facebook login 6\" width=\"1024\" height=\"87\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-6-1024x87.png 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-6-300x25.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-6.png 1273w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><br \/>\nhatas\u0131n\u0131 al\u0131yoruz..<br \/>\nHata mesaj\u0131 metinsel olarak \u015f\u00f6yle;<br \/>\n&#8220;<em><strong><span style=\"color: #999999;\">Uygulama yap\u0131land\u0131rmas\u0131 verilen URL&#8217;ye izin vermiyor.: Uygulaman\u0131n ayarlar\u0131 verilen URL&#8217;lerden bir veya daha fazlas\u0131na izin vermiyor. URL&#8217;ler \u0130nternet Sitesinin URL&#8217;si ve Kanvas URL&#8217;si olmal\u0131d\u0131r veya domain uygulaman\u0131n domainlerinden birinin altdomaini olmal\u0131d\u0131r.<\/span><\/strong><\/em>&#8221;<\/p>\n<p>Bu olas\u0131 hatay\u0131 bilerek ald\u0131\u011f\u0131m\u0131 bildirmek isterim.\u00c7\u00fcnk\u00fc bu makalenin amac\u0131 bir par\u00e7a anlatmak de\u011fil, par\u00e7alar\u0131 birle\u015ftirip bir b\u00fct\u00fcn te\u015fkil ederek bir yap\u0131y\u0131 anlatmakt\u0131r.<\/p>\n<p>Bu olas\u0131 hatan\u0131n sebebi, Facebook&#8217;ta a\u00e7t\u0131\u011f\u0131m\u0131z uygulamam\u0131zdaki bir ayar eksikli\u011finden do\u011fmaktad\u0131r.<br \/>\nFacebook uygulamam\u0131za girerek sol taraftaki men\u00fcden &#8220;Settings&#8221; kategorisine t\u0131klayarak \u00e7\u0131kan ekranda &#8220;Add Platform&#8221; butonuna t\u0131klayarak platform eklememiz gerekmektedir.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-7.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2779 size-full\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-7.png\" alt=\"asp.net - facebook login 7\" width=\"682\" height=\"409\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-7.png 682w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-7-300x179.png 300w\" sizes=\"auto, (max-width: 682px) 100vw, 682px\" \/><\/a><br \/>\nWebsite platformunu ekledikten sonra ise a\u015fa\u011f\u0131daki gibi platform ayarlanmal\u0131d\u0131r.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-8.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2781 size-full\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-8.png\" alt=\"asp.net - facebook login 8\" width=\"721\" height=\"484\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-8.png 721w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-8-300x201.png 300w\" sizes=\"auto, (max-width: 721px) 100vw, 721px\" \/><\/a><br \/>\nG\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi Site URL alan\u0131na, bu uygulaman\u0131n hangi domainde \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirtmemiz gerekmektedir.E\u011fer localde \u00e7al\u0131\u015facaksan\u0131z projenizin portunu sabitlemeyi unutmay\u0131n\u0131z.Z\u0131rt p\u0131rt port de\u011fi\u015fikli\u011fi olabilme ihtimali oldu\u011fundan dolay\u0131 s\u00fcrekli hata al\u0131rs\u0131n\u0131z ve sonu olmayan ba\u015fka \u00e7\u00f6z\u00fcmlerin pe\u015fine gidersiniz.<\/p>\n<p>Evet art\u0131k bu hatadan kurtulduk&#8230;<br \/>\nTekrardan projemizi derleyip \u00e7al\u0131\u015ft\u0131ral\u0131m \ud83d\ude42<\/p>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-9.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2786 size-full\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-9.png\" alt=\"asp.net - facebook login 9\" width=\"490\" height=\"419\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-9.png 490w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-9-300x256.png 300w\" sizes=\"auto, (max-width: 490px) 100vw, 490px\" \/><\/a><\/p>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi Facebook login talep sonucunda kullan\u0131c\u0131dan bilgilerine eri\u015fim i\u00e7in izin istemektedir.\u015eimdi biz bilgilerimize eri\u015fimi onaylay\u0131p &#8220;Tamam&#8221; butonuna basal\u0131m.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-10.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2788 \" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-10.png\" alt=\"asp.net - facebook login 10\" width=\"673\" height=\"173\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-10.png 899w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/asp.net-facebook-login-10-300x77.png 300w\" sizes=\"auto, (max-width: 673px) 100vw, 673px\" \/><\/a><\/p>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi onaylanan kullan\u0131c\u0131y\u0131 Facebook belirtilen adrese y\u00f6nlendiriyor ve kullan\u0131c\u0131 bilgileri istedi\u011fimiz \u015fekilde yay\u0131nlan\u0131yor.Tabi bu arada Facebook belirtti\u011fimiz adrese y\u00f6nlendirme yaparken &#8220;code&#8221; QueryString de\u011ferinide g\u00f6nderdi\u011fine dikkatnizi \u00e7ekerim&#8230;<\/p>\n<p>Sonu\u00e7 olarak bu Facebook bilgilerini veritaban\u0131n\u0131za kaydedebilir ya da ba\u015fka i\u015flemlerde kullanabilirsiniz.Art\u0131k kullan\u0131c\u0131lar sitenize Facebook \u00fczerinden giri\u015f yapabilmektedirler ve siz ona g\u00f6re kullan\u0131c\u0131 profili tan\u0131mlar veya kontrol\u00fc sa\u011flars\u0131n\u0131z.<\/p>\n<p>Evet arkada\u015flar, uzun oldu\u011fu kadar anla\u015f\u0131l\u0131r ve g\u00fcr bir yaz\u0131 oldu.Elimden geldi\u011fi kadar sizlere detayland\u0131r\u0131p konuyu aktarmak istedim.<\/p>\n<p>\u00d6rnek \u00e7al\u0131\u015fma projesini <a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/06\/FaceBookLogin.rar\" target=\"_blank\">buradan<\/a> indirebilirsiniz.<\/p>\n<p>Sonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar dilerim&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>G\u00fcn\u00fcm\u00fcz pop\u00fcler sitelerinde ziyaret\u00e7ilere kolayl\u0131k olmas\u0131 a\u00e7\u0131s\u0131ndan yeni sistemler geli\u015ftirilmektedir.Web siteleri yap\u0131sal anlamda kullan\u0131c\u0131 giri\u015f \u00e7\u0131k\u0131\u015flar\u0131n\u0131 kontrol ederken ziyaret\u00e7ilere b\u00fcy\u00fck emek ve zahmet ettirmektedirler.B\u00f6yle bir durum ziyaret\u00e7iler a\u00e7\u0131s\u0131ndan kalite ve prestij kayb\u0131 demektir.Hele hele&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[745,269,604,603],"class_list":["post-2745","post","type-post","status-publish","format-standard","hentry","category-asp-net","tag-asp-net","tag-facebook","tag-facebook-giris","tag-login"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/2745","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=2745"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/2745\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=2745"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=2745"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=2745"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}