Facebook Connect y ASP.NET

votos
45

Estoy en el paso 8 de la descripción de autenticación que se encuentra aquí: http://wiki.developers.facebook.com/index.php/How_Connect_Authentication_Works

En particular, el usuario ha iniciado sesión en Facebook a través de Facebook Connect y se ha creado su sesión web. ¿Cómo uso Facebook developer toolkit v2.0 (de claridad) para recuperar información sobre el usuario. Por ejemplo, me gustaría obtener el nombre y apellido del usuario.

Los ejemplos en la documentación están orientados a las aplicaciones de Facebook, que no es así.

Actualizar

Facebook lanzó recientemente la API Graph. A menos que esté manteniendo una aplicación que usa Facebook Connect, debe consultar la última API: http://developers.facebook.com/docs/

Publicado el 27/11/2008 a las 06:44
fuente por usuario
En otros idiomas...                            


7 respuestas

votos
13

Facebook Connect en realidad no es demasiado difícil, solo falta documentación.

Ponga el javascript necesario desde aquí: http://tinyurl.com/5527og

Valide que las cookies coincidan con la firma proporcionada por Facebook para evitar la piratería, consulte: http://tinyurl.com/57ry3s para obtener una explicación sobre cómo comenzar.

Cree un objeto api (Facebook.API.FacebookAPI) En el objeto api, configure la clave de la aplicación y el secreto que Facebook le brinda cuando crea su aplicación. Establecer api.SessionKeyy api.UserIdde las cookies creadas para usted desde facebook connect.

Una vez hecho esto, puede comenzar a hacer llamadas a Facebook:

Facebook.Entity.User user = api.GetUserInfo();   //will get you started with the authenticated person
Respondida el 02/12/2008 a las 08:34
fuente por usuario

votos
23

Tuve muchos problemas para averiguar cómo hacer llamadas al servidor una vez que el usuario inició sesión con Facebook Connect. La clave es que el JavaScript de Facebook Connect establece cookies en el cliente una vez que hay un inicio de sesión exitoso. Utiliza los valores de estas cookies para realizar llamadas de API en el servidor.

La parte confusa fue mirar la muestra de PHP que lanzaron. Su API del lado del servidor se encarga automáticamente de leer estos valores de cookies y configurar un objeto API que está listo para realizar solicitudes en nombre del usuario que ha iniciado sesión.

Aquí hay un ejemplo que usa Facebook Toolkit en el servidor después de que el usuario haya iniciado sesión con Facebook Connect.

Código del servidor:

API api = new API();
api.ApplicationKey = Utility.ApiKey();
api.SessionKey = Utility.SessionKey();
api.Secret = Utility.SecretKey();
api.uid = Utility.GetUserID();

facebook.Schema.user user = api.users.getInfo();
string fullName = user.first_name + " " + user.last_name;

foreach (facebook.Schema.user friend in api.friends.getUserObjects())
{
   // do something with the friend
}

Utility.cs

public static class Utility
{
    public static string ApiKey()
    {
        return ConfigurationManager.AppSettings["Facebook.API_Key"];
    }

    public static string SecretKey()
    {
        return ConfigurationManager.AppSettings["Facebook.Secret_Key"];
    }

    public static string SessionKey()
    {
        return GetFacebookCookie("session_key");
    }

    public static int GetUserID()
    {
        return int.Parse(GetFacebookCookie("user"));
    }

    private static string GetFacebookCookie(string name)
    {
        if (HttpContext.Current == null)
            throw new ApplicationException("HttpContext cannot be null.");

        string fullName = ApiKey() + "_" + name;
        if (HttpContext.Current.Request.Cookies[fullName] == null)
            throw new ApplicationException("Could not find facebook cookie named " + fullName);
        return HttpContext.Current.Request.Cookies[fullName].Value;
    }
}
Respondida el 15/12/2008 a las 22:02
fuente por usuario

votos
15

Seguí este concepto y escribí un artículo completo que resuelve este problema en ASP.NET. Por favor mira lo siguiente.

Cómo recuperar datos de usuario de Facebook Connect en ASP.NET - Devtacular

Gracias a Calebt por un buen comienzo en esa clase de ayuda.

Disfrutar.

Respondida el 01/03/2009 a las 07:43
fuente por usuario

votos
8

Esto falta en las respuestas enumeradas hasta ahora:

Después de que el inicio de sesión sea exitoso, Facebook recomienda que valide que las cookies son de hecho legítimas y colocadas en la máquina cliente por ellas.

Aquí hay dos métodos que se pueden usar juntos para resolver esto. Es posible que desee agregar el método IsValidFacebookSignature a la clase de utilidad de Calebt. Tenga en cuenta que también he cambiado ligeramente su método GetFacebookCookie.

private bool IsValidFacebookSignature()
{
        //keys must remain in alphabetical order
        string[] keyArray = { "expires", "session_key", "ss", "user" };
        string signature = "";

        foreach (string key in keyArray)
            signature += string.Format("{0}={1}", key, GetFacebookCookie(key));

        signature += SecretKey; //your secret key issued by FB

        MD5 md5 = MD5.Create();
        byte[] hash = md5.ComputeHash(Encoding.UTF8.GetBytes(signature.Trim()));

        StringBuilder sb = new StringBuilder();
        foreach (byte hashByte in hash)
            sb.Append(hashByte.ToString("x2", CultureInfo.InvariantCulture));

        return (GetFacebookCookie("") == sb.ToString());
    }

    private string GetFacebookCookie(string cookieName)
    {
        //APIKey issued by FB
        string fullCookie = string.IsNullOrEmpty(cookieName) ? ApiKey : ApiKey + "_" + cookieName;

        return Request.Cookies[fullCookie].Value;
    }

SecretKey y ApiKey son valores proporcionados por Facebook. En este caso, estos valores deben establecerse, preferentemente procedentes del archivo .config.

Respondida el 03/06/2009 a las 03:34
fuente por usuario

votos
6

Seguí el gran artículo de Bill e hice este pequeño componente. Se encarga de identificar y validar al usuario de las cookies de Facebook Connect.

Autenticación de Facebook Connect para ASP.NET

¡Espero que eso ayude a alguien!

Aclamaciones,

Adán

Respondida el 30/06/2009 a las 21:09
fuente por usuario

votos
1

Mi granito de arena: una muy simple proyecto que utiliza el "inicio de sesión con Facebook" característica - facebooklogin.codeplex.com

No es una biblioteca, sino que muestra cómo funciona todo.

Respondida el 11/04/2011 a las 21:23
fuente por usuario

votos
3

También puede utilizar SocialAuth.NET

Proporciona autenticación, perfiles y contactos con Facebook, Google, MSN y Yahoo con poco esfuerzo de desarrollo.

Respondida el 30/05/2011 a las 13:33
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more