Make Facebook API Calls with FaceSharp
Development Guide Page 4 of 4- Get FaceSharp with NuGet
- Apply Attributes on Controllers for authentication.
- Initialize Facebook JavaScript SDK Properly Learn how to initialize the Javascript SDK AND Facesharp Server Side at the same time.
- Make Facebook API Calls with FaceSharp
Graph API Calls
In FaceSharp.MVC.Code.Facebook.GraphApi there are base methods you can use to call into the Facebook Graph API, these will return a JObject if the request was sent successfully.
// Get Photos in an Album
var jObject = MakeGraphRequest(albumId, "photos");
// Get a Photo by it's ID
var jObject = MakeGraphRequest(photoId);
// Get the user's details
var jObject = MakeGraphRequest("me", fields: new[] { "id", "name", "first_name", "last_name", "email", "birthday" });
// Get a list of all the items a user has liked
var jObject = MakeGraphRequest(userId.ToString(), "likes");
You can easily parse the JObject into your own custom object.
// Get a list of all the items a user has liked
var jObject = MakeGraphRequest(userId.ToString(), "likes");
var likes = new List<Like>();
if (jObject != null)
{
var jData = (JArray)jObject["data"];
likes = (from like in jData
select new Like()
{
Id = long.Parse((string)like["id"]),
Name = (string)like["name"],
Category = (string)like["category"],
CreatedTime = (string)like["created_time"]
}).ToList();
}
Here it is all together..
public IEnumerable<Like> GetUserLikes(long userId)
{
var jObject = MakeGraphRequest(userId.ToString(), "likes");
var likes = new List<Like>();
if (jObject != null)
{
var jData = (JArray)jObject["data"];
likes = (from like in jData
select new Like()
{
Id = long.Parse((string)like["id"]),
Name = (string)like["name"],
Category = (string)like["category"],
CreatedTime = (string)like["created_time"]
}).ToList();
}
return likes.AsEnumerable();
}
You can also work with dynamic objects as well:
var facebookApi = new FacebookApi(); dynamic friends = facebookApi.GraphApi.MakeGraphRequest("me", "friends", new[] {"id", "name", "first_name", "last_name"});
Rest API Calls
In FaceSharp.MVC.Code.Facebook.RestApi there are base methods you can use to call into the Facebook Rest API, these will return a string if the request was sent successfully.
// Specifying just rest method MakeRestRequest("dashboard.decrementCount"); // Specifying both rest method and parameters MakeRestRequest("dashboard.decrementCount", new Dictionary<string, string>() { {"count",count.ToString()} }); // Executing FQL var queryResults = _restBase.ExecuteFql("SELECT application_id FROM developer WHERE developer_id=" + _user.GetCurrentUserId().ToString());
Parsing XML returned from FQL Statement
string results = null;
// Execute FQL - Get Results
var queryResults = _restBase.ExecuteFql("SELECT application_id FROM developer WHERE developer_id=" + _user.GetCurrentUserId().ToString());
var applications = new List<Types.Application>();
// Confirm that the results came back
if (!String.IsNullOrEmpty(queryResults))
{
XNamespace ns = "http://api.facebook.com/1.0/";
var xdoc = XDocument.Parse(queryResults);
var appIds = from app in xdoc.Descendants(ns + "developer")
select (string)app.Element(ns + "application_id");
var jObject = MakeGraphRequest(appIds);
if (jObject != null)
{
applications.AddRange(
appIds.Select(appId => jObject[appId]).Where(x => x != null).Select(
application => new Types.Application()
{
Id = long.Parse((string)application["id"]),
Name = (string)application["name"],
Description = (string)(application["description"] ?? ""),
Link = (string)application["link"]
}));
}
}