Introduction
I am going to teach you how to add Facebook login functionality in your web application using C#. First, you need to create
a Facebook account (if you haven’t already) and then activate your developer account by visiting
this link: https://developers.facebook.com.
Once you have created it, now you can create an app by clicking on the Apps link,
circled in the below image.
Now follow the steps and you’ll see the App ID and the secret key.
Step 1: Enter your app name here.
Step 2:
Step 3: Final step. Here you can see your app Id and app secret key. You need to mentione your domain name and site URL.
This can be either an offline or online URL.
Once your app is setup, now we can move to the coding part.
Page 1: In the first ASPX (facebook_login.aspx) page, write the below code.
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class facebook_login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string host = Request.ServerVariables["HTTP_HOST"];
string facebookClientId =
System.Configuration.ConfigurationManager.AppSettings["FacebookClientId"];
string RedirectURL = "";
if (Request.QueryString["redirectURL"] != null)
{
RedirectURL = Request.QueryString["redirectURL"].ToString();
Session["RedirectURL"] = RedirectURL;
}
Response.Redirect(@"https://graph.facebook.com/oauth/authorize?client_id=" +
facebookClientId + "&redirect_uri=http://" + host +
@"/FBcallback.aspx&scope=publish_stream,offline_access,publish_actions");
}
}
Here we are redirecting users to the Facebook page for the user to login to his/her
Facebook account.
Parameters passed in the above API:
client_id
: this is a our AppID that we have created above, i.e., 414331798577752.redirect_uri
: this will be our page link. Facebook will redirect
the user to this page after login.scope
: the permissions we want from the user to accept; we need this to post data on
the user’s wall.
Page 2 (Fbcallback.aspx): In this page we will get code from the first page and get the access token using that code value.
public partial class FBcallback : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["code"] != null)
{
string code = Request.QueryString["code"].ToString();
oAuthFacebooks fbAC = new oAuthFacebooks();
string respnse = "";
try
{
fbAC.AccessTokenGet(code);
respnse = fbAC.Token;
}
catch (Exception ex)
{
Response.Redirect("http://localhost:8020/aspx/SiteLogin.aspx?error=" + ex.Message);
}
if (Session["RedirectURL"] != null && Session["RedirectURL"].ToString() != "")
{
Response.Redirect(Session["RedirectURL"].ToString() + "?token=" + respnse + "&source=FB");
}
else
{
Response.Redirect("http://localhost:8020/aspx/SiteLogin.aspx?token=" + respnse);
}
}
else
{
Response.Redirect("http://localhost:8020/aspx/SiteLogin.aspxerror=code not found" +
Request.QueryString["error_reason"].ToString());
}
}
Page 3: SiteLogin.aspx - now we get the access token and using it we can get
the user’s Facebook details.
string token = Request.QueryString["token"];
string HitURL = string.Format("https://graph.facebook.com/me?access_token={0}", token);
oAuthFacebooks objFbCall = new oAuthFacebooks();
string JSONInfo = objFbCall.WebRequest(oAuthFacebooks.Method.GET, HitURL, "");
JObject Job = JObject.Parse(JSONInfo);
JToken Jdata = Job.Root;
if (Jdata.HasValues)
{
string UID = (string)Jdata.SelectToken("id");
string firstname = (string)Jdata.SelectToken("first_name");
string lastname = (string)Jdata.SelectToken("last_name");
Response.Write(UID + "-" + firstname + "-" + lastname);
}
You need to add the namespace Newtonsoft.Json.Linq
for JSON data parsing. Here we are making a web request
to the Facebook API (https://graph.facebook.com/me?) and
passing an active access token to get the user's Facebook details. It will get returned by
Facebook in JSON format. We have used the JSON parser to do the job.
Thanks folks, I hope this will be useful for you.