protected void Page_Load(object sender, EventArgs e)
{ //Kullanıcı izin verdiye servisten bize code isminde bir değer dönmesi gerekiyor if (!string.IsNullOrEmpty(Request["code"]) && !Page.IsPostBack) { VeriCek(); } }
private void VeriCek() { //Authority işlemleri için kullanılan client ve request nesnelerimizi oluşturuyoruz RestClient client = new RestClient { Authority = "https://graph.facebook.com/oauth/" }; RestRequest request = new RestRequest { Path = "access_token" }; //Facebook AppID değerimiz request.AddParameter("client_id", ConfigurationManager.AppSettings["FacebookAppID"]); //Daha önceden de kullandığımız callback adresimiz request.AddParameter("redirect_uri", "http://www.gokhanbagci.com/facebookCallback.aspx"); //Facebook AppSecret değerimiz request.AddParameter("client_secret", ConfigurationManager.AppSettings["FacebookAppSecret"]); //Bize geri dönen code değerimiz request.AddParameter("code", Request["code"]); RestResponse response = client.Request(request); //Dönen değerlerin dönüşüm işlemlerini tamamlıyoruz StringDictionary result = Parse(response.Content); string appToken = result["access_token"]; //appToken değişkeni bizim verdiğimiz değerlerle servisin verdiği değişkenleri karşılaştırarak //yeni değer üretir, daha sonra bu değişkenle tekrar servise bağlanıp istekte bulunduğumuz nesneyi //bize geri bildirilmesini sağlar Detay(appToken); }
private StringDictionary Parse(string queryString) { queryString = queryString + "&"; StringDictionary outc = new StringDictionary(); Regex r = new Regex(@"(?<name>[^=&]+)=(?<value>[^&]+)&", RegexOptions.IgnoreCase | RegexOptions.Compiled); IEnumerator enums = r.Matches(queryString).GetEnumerator(); while (enums.MoveNext() && enums.Current != null) { outc.Add(((Match)enums.Current).Result("${name}"), ((Match)enums.Current).Result("${value}")); } return outc; }
private void Detay(string sToken) { //Authority işlemleri için kullanılan client ve request nesnelerimizi oluşturuyoruz RestClient client = new RestClient { Authority = "https://graph.facebook.com/" }; //Path değerimiz "me" yani login olan kullanıcı bilgilerini bize geri döndürüyor. //Bu kısımda bir çok path değerleri var. Ör: me/friends, me/photos gibi... RestRequest request = new RestRequest { Path = "me" }; request.AddParameter("access_token", sToken); RestResponse response = client.Request(request); JavaScriptSerializer ser = new JavaScriptSerializer(); //Bize dönen değer json formatında bir User nesnesi, //Uygun bir C# clasına direkt atama yaptırabiliyoruz. SocialUser user = ser.Deserialize<SocialUser>(response.Content); if (user != null) { //user.id değeri her kullanıcı için unique bir değer //Sizde bu değere göre kendi projenizde ilişkilendirmeler yapabilirsiniz. //Gerisi sizin hayal gücünüze kalmış :) Response.Write(user.name + "/" + user.id + "<br><img src=\"https://graph.facebook.com/" + user.id + "/picture\">"); } }
|