Evet facebook graph api ile beraberinde artık search (arama ) yapabilir durumdayız .
JSON data olarak deri dönüşümü olan graph apinin kullanımı ile ilgili bir kaç örnek okuduktan sonradenemeler yapmaya başlamış durumdayım daha tam net olarak anlamış olamamakla birlikte sonuca yavaş yavaş ulaşabileceğimi umuyorum .
Belki kullanmış olduğum teknik bazılarınaza abes , uzun veya hatalı geliyor olabilir.Ama şu an itibari ile gelen bir data ve listelemesi mevucut . Nasıl yaptığın değil sonuca ulaşıp ulaşmadığının önemli olduğuna inanıyorum . Tabiki kod optimizasyonu yapan dostlarımız bu konuda yardımcı olurlarsa sevinirim.
oncelikle
JSON.cs dosyası lazım olacak bizlere
JSON js = new JSON(); StringBuilder sb = new StringBuilder(); byte[] buf = new byte[8192]; HttpWebRequest request = (HttpWebRequest) WebRequest.Create("https://graph.facebook.com/search?q=watermelon&type=post"); HttpWebResponse response = (HttpWebResponse) request.GetResponse(); Stream resStream = response.GetResponseStream(); string fbSearch = ""; string tempString = null; int count = 0; do { // datayı buffera yaz count = resStream.Read(buf, 0, buf.Length); // okunacak data oldugundan emın ol if (count != 0) { tempString = Encoding.ASCII.GetString(buf, 0, count); sb.Append(tempString); } } while (count > 0); // okumak için data mevcutmu ? // eger data varsa stringe ata fbSearch += sb.ToString(); JsonTextParser parser = new JsonTextParser(); Hashtable ht = (Hashtable)JSON.JsonDecode(fbSearch); ArrayList keys = GetKeys(ht); // grid e basmak icin datatable olustur DataTable table = new DataTable("test"); table.Columns.Add("key", typeof(string)); table.Columns.Add("value", typeof(string)); foreach (object obj in keys) { if (obj.ToString() == "data") { ArrayList values = (ArrayList)ht[obj]; foreach (object obji in values) { ArrayList keys2 = values; foreach (object obj2 in keys2) { ArrayList valu1 = (ArrayList)keys2; ArrayList o = GetKeys((Hashtable)obj2); ArrayList v = GetValues((Hashtable)obj2); int count1 = o.Count; ArrayList a = new ArrayList(); for (int i = 0; i < count1; i++) { table.Rows.Add(o[i].ToString(),v[i].ToString()); } GridView1.DataSource = table; GridView1.DataBind(); } } } } } public static ArrayList GetKeys(Hashtable table) { return (new ArrayList(table.Keys)); } public static ArrayList GetValues(Hashtable table) { return (new ArrayList(table.Values)); }
belirttiğim gibi belki taklalar atarak sonuca ulastım ama çok da fena olmadı...
Sonuc olarak cıktı ekranımız
Merhabalar güzel bir paylaşım ancak şöyle bir problemim var.
https://graph.facebook.com/search?q=watermelon&type=post
yerine
https://graph.facebook.com/search?q=müşteri hizmetleri&type=post
yazarsam ü yü ve ş’yi url encode ediyor ve sonuç getirmiyor. Bunu nasıl aşabilirim.
Fatih bey bu konu hakkında biraz araştırma yaptım . Facebook developerda bu konu hakkında değil ama UTF 8 aramalar hakkında bug Bildirilmiş. Bug içeriğine Buradan ulaşabilirsiniz
birde mesela arama sonuçlarında u0131 = ı harfi yerine geçmekte u015e = ş harrfi yerine geçmekte belki burdan yola çıkarakta bir mantalite geliştirilebilir ama dediğim gibi bug mevcut oldugğu için sıkıntı çıkabilir.
Çok teşekkürler cevabınız için.
merhaba,
from u nasil parseleyecegiz? beceremedim.