Sei sulla pagina 1di 5

Una de las funciones bsicas de cualquier aplicacin moderna es la capacidad de aprovechar la

autenticacin Social (tambin conocido como Entrada Social). entrada social es una forma de inicio
de sesin nico utilizando informacin de acceso existente desde un proveedor de identidad, tales
como Facebook, Twitter, Google o Microsoft para iniciar sesin en un sitio web de terceros o
aplicacin en lugar de crear una nueva cuenta de inicio de sesin especficamente para esa
aplicacin. El mecanismo est diseado para simplificar los inicios de sesin para los usuarios finales,
as como proporcionar informacin demogrfica ms fiable para los desarrolladores.

Como es conocido tras bambalinas, la entrada Social es en realidad impulsado por OAuth.
OAuth es un estndar abierto para la autorizacin. OAuth proporciona aplicaciones de cliente el
acceso de delegado seguro 'a los recursos del servidor en nombre del propietario de un recurso. En
l se especifica un proceso para los propietarios de recursos para autorizar el acceso de terceros a
sus recursos de servidor sin compartir sus credenciales. Diseado especficamente para trabajar con
protocolo de transferencia de hipertexto (HTTP), OAuth permite esencialmente tokens de acceso
que se emitirn a clientes de terceros por un servidor de autorizacin, con la aprobacin del
propietario del recurso, o el usuario final. El cliente utiliza entonces el token de acceso para acceder
a los recursos protegidos alojados en el servidor de recursos. OAuth se utiliza comnmente como
una forma para que los usuarios de Internet para iniciar sesin en sitios web de terceros que utilizan
sus cuentas de Facebook, Twitter, Google o Microsoft, sin tener que preocuparse acerca de sus
credenciales de acceso sean comprometidos.

Este articulo sacado de internet muestra la forma fcil de poder utilizar este mtodo de
autenticacin a nuestros sitios con credenciales previas en redes sociales.

La imagen describe mejor la forma de ejecucin del cdigo.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.IO;
using System.Web.Script.Serialization;
using System.Web.Security;
using System.Collections;
using System.Configuration;
using FacebookLoginASPnetWebForms.Models;

namespace FacebookLoginASPnetWebForms.account
{
public partial class user : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Get the Facebook code from the querystring
if (Request.QueryString["code"] != "")
{
var obj = GetFacebookUserData(Request.QueryString["code"]);

ListView1.DataSource = obj;
ListView1.DataBind();
}
}

protected List<Facebook.User> GetFacebookUserData(string code)


{
// Exchange the code for an access token
Uri targetUri = new
Uri("https://graph.facebook.com/oauth/access_token?client_id=" +
ConfigurationManager.AppSettings["FacebookAppId"] + "&client_secret=" +
ConfigurationManager.AppSettings["FacebookAppSecret"] + "&redirect_uri=http://" +
Request.ServerVariables["SERVER_NAME"] + ":" + Request.ServerVariables["SERVER_PORT"] +
"/account/user.aspx&code=" + code);
HttpWebRequest at = (HttpWebRequest)HttpWebRequest.Create(targetUri);

System.IO.StreamReader str = new


System.IO.StreamReader(at.GetResponse().GetResponseStream());
string token = str.ReadToEnd().ToString().Replace("access_token=", "");

// Split the access token and expiration from the single string
string[] combined = token.Split('&');
string accessToken = combined[0];

// Exchange the code for an extended access token


Uri eatTargetUri = new
Uri("https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id="
+ ConfigurationManager.AppSettings["FacebookAppId"] + "&client_secret=" +
ConfigurationManager.AppSettings["FacebookAppSecret"] + "&fb_exchange_token=" +
accessToken);
HttpWebRequest eat = (HttpWebRequest)HttpWebRequest.Create(eatTargetUri);
StreamReader eatStr = new StreamReader(eat.GetResponse().GetResponseStream());
string eatToken = eatStr.ReadToEnd().ToString().Replace("access_token=", "");

// Split the access token and expiration from the single string
string[] eatWords = eatToken.Split('&');
string extendedAccessToken = eatWords[0];

// Request the Facebook user information


Uri targetUserUri = new
Uri("https://graph.facebook.com/me?fields=first_name,last_name,gender,locale,link&access_tok
en=" + accessToken);
HttpWebRequest user = (HttpWebRequest)HttpWebRequest.Create(targetUserUri);

// Read the returned JSON object response


StreamReader userInfo = new
StreamReader(user.GetResponse().GetResponseStream());
string jsonResponse = string.Empty;
jsonResponse = userInfo.ReadToEnd();

// Deserialize and convert the JSON object to the Facebook.User object type
JavaScriptSerializer sr = new JavaScriptSerializer();
string jsondata = jsonResponse;
Facebook.User converted = sr.Deserialize<Facebook.User>(jsondata);

// Write the user data to a List


List<Facebook.User> currentUser = new List<Facebook.User>();
currentUser.Add(converted);

// Return the current Facebook user


return currentUser;
}
}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace FacebookLoginASPnetWebForms.Models
{
public class Facebook
{
public class User
{
public string id { get; set; }
public string first_name { get; set; }
public string last_name { get; set; }
public string link { get; set; }
public string username { get; set; }
public string gender { get; set; }
public string locale { get; set; }
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;

namespace FacebookLoginASPnetWebForms
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
HyperLink1.NavigateUrl =
"https://www.facebook.com/v2.4/dialog/oauth/?client_id=" +
ConfigurationManager.AppSettings["FacebookAppId"] + "&redirect_uri=http://" +
Request.ServerVariables["SERVER_NAME"] + ":" + Request.ServerVariables["SERVER_PORT"] +
"/account/user.aspx&response_type=code&state=1";
HyperLink1.Text = "Login with Facebook";
}
}
}

Potrebbero piacerti anche