Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Facebook Graph API retrieve Friends with json and C#

I'm working in C# with the Graph API and have been able to grab Facebook user profile information such as the ID, Name and email and then deserialize the JSON to be able to assign the values to labels.

However, my problem is when I go to grab the list of Friends, or list of anything for that matter, how do I go about deserializing this JSON information in C# so that I can store the data? I believe I'm looking for a way to deserialize the results to a dictionary object so that I can then loop through the data.

like image 246
user402880 Avatar asked Dec 23 '22 00:12

user402880


1 Answers

Well..I ended up using JSON.Net, and it worked great. Thank you for pointing me in that direction. With the help of another article I found (http://www.mattcashatt.com) and the JSON.net files, I was able to get everything working. Here is some of the code I used.

            #region JSON.Net User Profile
            //Profile URL
            url = "https://graph.facebook.com/me?fields=id,name,email&access_token=" + oAuth.Token;

            JObject myProfile = JObject.Parse(requestFBData(url));
            string myID = myProfile["id"].ToString().Replace("\"", "");
            string myName = myProfile["name"].ToString().Replace("\"", "");
            string email = myProfile["email"].ToString().Replace("\"", "");

            lblID.Text = myID;
            lblFullName.Text = myName;
            lblEmail.Text = email;
            imgUser.ImageUrl = "https://graph.facebook.com/me/picture?type=large&access_token=" + oAuth.Token;

            #endregion


            #region JSON.Net Friends

            //Friends URL
            url = "https://graph.facebook.com/me/friends?access_token=" + oAuth.Token;


            JObject myFriends = JObject.Parse(requestFBData(url));

            string id="";
            string name = "";

            //Loop through the returned friends
            foreach (var i in myFriends["data"].Children())
            {
                id = i["id"].ToString().Replace("\"", "");
                name = i["name"].ToString().Replace("\"", "");
                lblFriends.Text = lblFriends.Text + "<br/> " + "id: " + id + " name: " + name + "<img src=" + "https://graph.facebook.com/" + id + "/picture>";
            }

            #endregion



        }
    }

}

public string requestFBData(string action)
{
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(action);
    HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

    StreamReader sr = new StreamReader(resp.GetResponseStream());
    string results = sr.ReadToEnd();
    sr.Close();

    return results;
}
like image 149
user402880 Avatar answered Dec 29 '22 23:12

user402880