In this article I am explain Login with Facebook in MVC4.0. MVC 4 Provides an easy method to integrate social sites to your application. You can easily login to your site using facebook, twitter, google or microsoft with just a few line of code.
Here are the detailed steps on how its done
Before you can add Facebook login to your web application you will need To register a new Facebook application head over to the Facebook Developer page and select “Create a New App” from the Apps menu at the top of the page.
Create App: Create App using below Steps-
Step1-Click "Add a New App"
Step 7: Take note of the values for the “App ID” and “App Secret” fields as your will need these when enabling Facebook login in your ASP.NET MVC application. To view the App Secret click on the “Show” button next the the app secret.And Add Your Contact Email.
Now Enabling Facebook authentication in your ASP.NET MVC Application
Step2-Choose below Option according your requirement
Step3: Write App Name
Step4: Choose Category
Step5:Put the Site Url
Step6:Click on the “Settings” menu in the left hand navigation bar.
Step 7: Take note of the values for the “App ID” and “App Secret” fields as your will need these when enabling Facebook login in your ASP.NET MVC application. To view the App Secret click on the “Show” button next the the app secret.And Add Your Contact Email.
Now Enabling Facebook authentication in your ASP.NET MVC Application
The next step is to add the Facebook login to your ASP.NET MVC application. For this we will create a new ASP.NET MVC application using Visual Studio. Go to File > New > Project and select the template for a new “ASP.NET Web Application” and click “OK”.
Next, select the Internet Application template
Now Open AuthConfig.cs file
Copy paste the appid and secret in authconfig file
Run the Application. Click On Login
Click On Facebook Button and you are login perfectly. But You are not getting Email of user it is Most impotant thing is pass scope=email while redirecting to the facebook oauth dialog. if you need additional fields which require user permission pass the same as parameters.
In the second function I am creating my own AuthenticationResult by calling functions from my custom facebook class
Facebook.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MvcApplication1Demo.Extensions;
using MvcApplication1Demo.Include;
using System.Web.Mvc;
namespace MvcApplication1Demo.Include
{
public class Facebook
{
public string Facebook_GraphAPI_Token = "https://graph.facebook.com/oauth/access_token?";
public string Facebook_GraphAPI_Me = "https://graph.facebook.com/me?";
public string AppID = "YOUR APP
ID";
public string AppSecret = "YOUR
SECRET KEY";
public IDictionary<string, string> GetUserData(string accessCode, string redirectURI)
{
string token = Web.GetHTML(Facebook_GraphAPI_Token + "client_id=" + AppID
+ "&redirect_uri=" + HttpUtility.HtmlEncode(redirectURI) + "%3F__provider__%3Dfacebook" + "&client_secret=" + AppSecret + "&code=" + accessCode);
if (token == null || token == "")
{
return null;
}
string data = Web.GetHTML(Facebook_GraphAPI_Me + "fields=id,name,email,username,gender,link&access_token=" + token.Substring("access_token=", "&"));
// this
dictionary must contains
var userData = new Dictionary<string, string>();
userData.Add("id",
data.Substring("\"id\":\"", "\""));
userData.Add("username",
data.Substring("username\":\"", "\""));
userData.Add("name",
data.Substring("name\":\"", "\""));
userData.Add("link",
data.Substring("link\":\"", "\"").Replace("\\/","/"));
userData.Add("gender",
data.Substring("gender\":\"", "\""));
userData.Add("email",
data.Substring("email\":\"", "\"").Replace("\\u0040", "@"));
userData.Add("accesstoken",
token.Substring("access_token=", "&"));
return userData;
}
}
}
Class File Web . To Read HTML from URL
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net;
using System.IO;
namespace MvcApplication1Demo.Include
{
public static class Web
{
//
// Get
HTML
//
Author : Jitendra Gangwar
// Date
: Dec 18 2014
//
Modified : Dec 18 2014
//
Changed To Static Method
//
public static string GetHTML(string URL)
{
string connectionString = URL;
try
{
System.Net.HttpWebRequest
myRequest = (HttpWebRequest)WebRequest.Create(connectionString);
myRequest.Credentials = CredentialCache.DefaultCredentials;
////
Get the response
WebResponse webResponse = myRequest.GetResponse();
Stream respStream = webResponse.GetResponseStream();
////
StreamReader ioStream = new StreamReader(respStream);
string pageContent = ioStream.ReadToEnd();
////
Close streams
ioStream.Close();
respStream.Close();
return pageContent;
}
catch (Exception)
{
}
return null;
}
}
}
Note:-I hope this article is helpfulfor you.Please Like and Share it....
No comments:
Post a Comment